Commit Graph

33810 Commits

Author SHA1 Message Date
Fariborz Jahanian 37c6417949 objc: fixed enum type is supported in objc mode.
Fixes a bug where enumerator type is not this
fixed type. // rdar://10381507

llvm-svn: 143724
2011-11-04 18:51:24 +00:00
Richard Smith fe5354b945 Clean up C++11 constant expression testing.
llvm-svn: 143720
2011-11-04 18:32:57 +00:00
Devang Patel 45124500bb Add new test.
llvm-svn: 143706
2011-11-04 17:12:03 +00:00
Devang Patel f1faeefb32 Add new test.
llvm-svn: 143704
2011-11-04 16:57:26 +00:00
Argyrios Kyrtzidis d2b9112354 [arcmt] For GC, cleanup and turn -finalize to -dealloc.
llvm-svn: 143701
2011-11-04 15:58:22 +00:00
Argyrios Kyrtzidis d8cdfbc905 [arcmt] In GC, error for use of CFMakeCollectable because it will leak the
object that it receives in ARC.

llvm-svn: 143700
2011-11-04 15:58:17 +00:00
Argyrios Kyrtzidis 3eaa22af57 In C++ keep unavailable function calls in the AST, like in C/ObjC.
This allows the migrator to visit and fix them.

llvm-svn: 143699
2011-11-04 15:58:13 +00:00
Argyrios Kyrtzidis d208ef95aa [arcmt] In GC, transform NSMakeCollectable to CFBridgingRelease.
llvm-svn: 143698
2011-11-04 15:58:08 +00:00
Benjamin Kramer 62144477eb Remove unused variables.
llvm-svn: 143696
2011-11-04 15:05:51 +00:00
Chandler Carruth 4c81dfacbb Sink the strange '-stdlib=...' flag handling into the C++ include
handling logic of the generic ToolChain. This flag, despite its name,
has *nothing* to do with the GCC flag '-nostdlib' that relates
(exclusively) to the linking behavior. It is a most unfortunate name in
that regard...

It is used to tell InitHeaderSearch.cpp *which* set of C++ standard
library header search paths to use -- those for libstdc++ from GCC's
installation, or those from a libc++ installation. As this logic is
hoisted out of the Frontend, and into the Driver as part of this
ToolChain, the generic method will be overridden for the platform, where
it can implement this logic directly. As such, hiding the CC1 option
passing in the generic space is a natural fit despite the odd naming.

Also, expand on the comments to clarify whats going on, and tidy up the
Tools.cpp code now that its simpler.

llvm-svn: 143687
2011-11-04 07:43:33 +00:00
Chandler Carruth 491db32444 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.

llvm-svn: 143686
2011-11-04 07:34:47 +00:00
Chandler Carruth 9802c1406f Add a FIXME to cleanup the CPATH handling. It's currently burried with
the rest of the mess in InitHeaderSearch.cpp. We could hoist it into the
driver profitably, removing more noise from the driver -> frontend
communication.

llvm-svn: 143685
2011-11-04 07:12:58 +00:00
Chandler Carruth 6bfd84f25d 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.

llvm-svn: 143684
2011-11-04 07:12:53 +00:00
Richard Smith ed5165ff52 Constant expression evaluation: refactor to start the groundwork for coping with
initializations which refer indirectly to elements of the object being
initialized.

llvm-svn: 143680
2011-11-04 05:33:44 +00:00
Richard Smith 96e0c101fe Constant expression evaluation: track the manner in which an lvalue was written,
to allow us to implement the C++11 rule that a non-active union member can't be
read, and use it to implement subobject access for string literals.

llvm-svn: 143677
2011-11-04 02:25:55 +00:00
Richard Smith e9e20dd302 Constant expression evaluation: although we don't know whether a literal will
be at the same address as another object, we do know it won't alias a null
pointer.

llvm-svn: 143674
2011-11-04 01:10:57 +00:00
Richard Trieu 364ee42ee8 In the AST dump, add a space between the type and value for CharacterLiteral.
llvm-svn: 143667
2011-11-03 23:56:23 +00:00
Akira Hatanaka f3879ee666 Use a single integer type for a sub-doubleword part of a byval structure.
llvm-svn: 143666
2011-11-03 23:31:00 +00:00
Eli Friedman 3d9f47fe6f Fix alignment on alloca's for parameters using ABIArgInfo::Expand.
llvm-svn: 143658
2011-11-03 21:39:02 +00:00
Chad Rosier 52d00e4815 Parse the warning options twice. The first pass sets diagnostic state, while
the second pass reports warnings/errors.  This has the effect that we follow 
the more canonical "last option wins" paradigm when there are conflicting 
options.
rdar://10383776

Previously, we parsed the warning options in order.  This caused non-intuitive
behavior:

1) clang test.c -Wnosuchwarning -Wno-unknown-warning-option
Before:
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
1 warning generated.
After:
[0 warning generated.]

2) clang test.c -Wnosuchwarning -Werror=unknown-warning-option
Before:
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
1 warning generated.
After:
error: unknown warning option '-Wnosuchwarning' [-Werror,-Wunknown-warning-option]

3) clang test.c -Werror=unknown-warning-option -Wnosuchwarning -Wno-error=unknown-warning-option -Wnosuchwarning
Before:
error: unknown warning option '-Wnosuchwarning' [-Werror,-Wunknown-warning-option]
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
After:
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
warning: unknown warning option '-Wnosuchwarning' [-Wunknown-warning-option]
2 warnings generated.

4) clang test.c -Werror=unknown-warning-option -Wnosuchwarning -Wno-error=unknown-warning-option -Wno-unknown-warning-option -Wnosuchwarning
Before:
error: unknown warning option '-Wnosuchwarning' [-Werror,-Wunknown-warning-option]

After:
[0 warning generated.]

llvm-svn: 143657
2011-11-03 21:23:39 +00:00
Argyrios Kyrtzidis 462ff35d44 After resetting the diagnostic state, set the number of warning occurring in the preamble.
llvm-svn: 143647
2011-11-03 20:57:33 +00:00
Eli Friedman eadd3e81a0 Fix the alignment on scalar parameter variables so that it matches what the AST thinks it should be. Per report on cfe-dev.
llvm-svn: 143645
2011-11-03 20:31:28 +00:00
Argyrios Kyrtzidis f50f7b2c65 [libclang] Fix crash when a #pragma diagnostic is included in the preamble.
A PCH file keeps track of #pragma diagnostics state; when loading the preamble, they conflicted
with the #pragma diagnostic state already present in the DiagnosticsEngine object due to
parsing the preamble.

Fix this by clearing the state of the DiagnosticsEngine object.
Fixes rdar://10363572 && http://llvm.org/PR11254.

llvm-svn: 143644
2011-11-03 20:28:19 +00:00
Douglas Gregor 7f763f1018 Force test to use the non-fragile ABI
llvm-svn: 143642
2011-11-03 19:58:50 +00:00
Argyrios Kyrtzidis 52d87a6f82 [libclang] Move CursorVisitor to its own header.
llvm-svn: 143639
2011-11-03 19:02:34 +00:00
Argyrios Kyrtzidis 04cf92fe7c [libclang] Make sure pointing inside the #include of the fields will return the struct.
llvm-svn: 143638
2011-11-03 19:02:30 +00:00
Argyrios Kyrtzidis 3cefc9d742 [libclang] Use CursorVisitor::Visit instead of invoking the visitor directly.
llvm-svn: 143637
2011-11-03 19:02:28 +00:00
Argyrios Kyrtzidis deb47d17dd [libclang] Add a test for "targeting" a field inside an #include that only
contains fields.

llvm-svn: 143636
2011-11-03 19:01:07 +00:00
Douglas Gregor 21ceb18429 Extend IsSimplyAccessible to check for Objective-C instance variable
accessibility. Fixes <rdar://problem/3727335>.

llvm-svn: 143635
2011-11-03 19:00:24 +00:00
Douglas Gregor f8b02cabca Fix grammaro
llvm-svn: 143633
2011-11-03 18:33:01 +00:00
Douglas Gregor 3c2404b31b Teach the ASTImporter to import DefinitionData bits.
llvm-svn: 143631
2011-11-03 18:07:07 +00:00
Douglas Gregor 3b52b69ccd Class can't be null in this context
llvm-svn: 143618
2011-11-03 17:41:55 +00:00
Douglas Gregor 03ba1887f0 Refactor Sema::IsSimplyAccessible slightly, to work on a DeclContext rather than a class
llvm-svn: 143615
2011-11-03 16:51:37 +00:00
Douglas Gregor dd847baadd When we're checking a friend function template in an out-of-line class
definition, we may not have a scope corresponding to the namespace
where that friend function template actually lives. Work around this
issue by faking up a scope with the appropriate DeclContext.

This is a bit of a hack, but it fixes <rdar://problem/10204947>.

llvm-svn: 143614
2011-11-03 16:37:14 +00:00
Argyrios Kyrtzidis 7ca77357ce [libclang] Add missing return in clang_getExpansionLocation that resulted in that function
always returning a null file/line/column.

Also add at least one use of clang_getExpansionLocation inside c-index-test that would have
made the tests to catch that.

llvm-svn: 143606
2011-11-03 02:20:36 +00:00
Argyrios Kyrtzidis e968152564 [libclang] Add infrastructure to be able to only deserialize decls in a file region and
use it for clang_getCursor.

llvm-svn: 143605
2011-11-03 02:20:32 +00:00
Argyrios Kyrtzidis cb373e3f31 [libclang] For c-index-test disable caching of code completion results if
the CINDEXTEST_COMPLETION_NO_CACHING environment variable is present.

llvm-svn: 143604
2011-11-03 02:20:25 +00:00
Jan Wen Voung 180319f72d Do not add "byval" attribute to records with non-trivial copy constructors
and destructors in the DefaultABIInfo.

llvm-svn: 143601
2011-11-03 00:59:44 +00:00
Douglas Gregor 2e10cf9620 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>.

llvm-svn: 143599
2011-11-03 00:16:13 +00:00
Akira Hatanaka 756ce7f9ab Set MinABIStackAlignInBytes to 8 if ABI is N32/64.
llvm-svn: 143597
2011-11-03 00:05:50 +00:00
Akira Hatanaka 101f70da7c Convert the type of a structure passed by value if it has double precision
fields in order to ease handling of such structures in backend. 

llvm-svn: 143596
2011-11-02 23:54:49 +00:00
Douglas Gregor e7f0675672 Test code completion for constructor initializers within the class
definition. This already worked; <rdar://problem/10208871>.

llvm-svn: 143595
2011-11-02 23:39:56 +00:00
Akira Hatanaka 1437852c38 Return function results whose size is smaller than 128-bits in registers if ABI
is N32/64.

llvm-svn: 143589
2011-11-02 23:14:57 +00:00
Eli Friedman d1370791c2 Use native endianness for writing out character escapes to the result buffer for string literal parsing. No functional change on little-endian architectures; should fix test failures on PPC.
llvm-svn: 143585
2011-11-02 23:06:23 +00:00
Douglas Gregor 10f939c3db Don't build member initializers for zero-length or incomplete arrays,
and don't try to destroy them, either. Fixes
<rdar://problem/10228639>.

llvm-svn: 143584
2011-11-02 23:04:16 +00:00
Fariborz Jahanian 10317eaa28 back out changes in r143399 and r143475.
rvale-references are captured by reference
in blocks. // rdar://9971124.

llvm-svn: 143583
2011-11-02 22:53:43 +00:00
Douglas Gregor 324dbd3b83 Don't encourage bug reports to the Clang mailing list. We have a bug
report link for that.

llvm-svn: 143581
2011-11-02 22:49:47 +00:00
Chad Rosier cdb008d117 In addition to dumping preprocessed source, dump a script with the command line
arguments that caused clang to crash.
rdar://8314451

llvm-svn: 143573
2011-11-02 21:29:05 +00:00
Douglas Gregor 07216d174e Fix various minor issues find via unreachable code warnings, from
Ahmed Charles!

llvm-svn: 143569
2011-11-02 20:52:01 +00:00
Anna Zaks 42a4463091 [analyzer] Tweak the test script
Rename the pre_run_static_analyzer script into cleanup_run_static_analyzer
and use it to clean up after the reference build - which is done as part of
adding a new project to the system.

llvm-svn: 143568
2011-11-02 20:46:50 +00:00
Chandler Carruth e0a89ab702 Add the newest Gentoo GCC version based on the reported installed
version in PR11298.

I hear-by apologize for adding yet more code to this monstrosity.

llvm-svn: 143567
2011-11-02 20:09:56 +00:00
Anna Zaks 75a3f48cac [analyzer] Start writing Checker Developer Manual.
So far added the skeleton + several more or less complete sections:
Getting Started
Idea for a Checker
AST Visitors
Useful Commands/Debugging Hints

llvm-svn: 143554
2011-11-02 17:49:20 +00:00
Douglas Gregor 8f5653a999 Drastically simplify the mapping from the declaration corresponding to
the injected-class-name of a class (or class template) to the
declaration that results from substituting the given template
arguments. Previously, we would actually perform a substitution into
the injected-class-name type and then retrieve the resulting
declaration. However, in certain, rare circumstances involving
deeply-nested member templates, we would get the wrong substitution
arguments.

This new approach just matches up the declaration with a declaration
that's part of the current context (or one of its parents), which will
either be an instantiation (during template instantiation) or the
declaration itself (during the definition of the template). This is
both more efficient (we're avoiding a substitution) and more correct
(we can't get the template arguments wrong in the member-template
case). 

Fixes <rdar://problem/9676205>.

llvm-svn: 143551
2011-11-02 17:38:53 +00:00
Douglas Gregor 9d0eb8f929 Use StringLiteral::getBytes(), not StringLiteral::getString(), when profiling the expression, so that it works for non-UTF8 strings.
llvm-svn: 143550
2011-11-02 17:26:05 +00:00
David Blaikie 503616199f Fixing some dead links. Patch by Jean-Daniel Dupas!
llvm-svn: 143539
2011-11-02 15:13:40 +00:00
Benjamin Kramer a4eadc5aa5 Remove virtually empty file.
llvm-svn: 143538
2011-11-02 12:04:24 +00:00
Michael J. Spencer e73bd64d12 Add colors to the C++11 status page.
llvm-svn: 143535
2011-11-02 06:29:37 +00:00
Bob Wilson 126c491319 Invoke the Darwin assembler with -g instead of --gdwarf2.
The -g and --gdwarf2 options are currently synonyms to the Darwin assembler.
But clang itself does not recognize --gdwarf2, so if we want to experiment
with using clang, with its integrated assembler, to replace the default
assembler, it is necessary to use -g.  <rdar://problem/10349486>

llvm-svn: 143533
2011-11-02 05:10:45 +00:00
Chandler Carruth c5d72c103b Update the CMake build for clang-tblgen to reflect that it directly
depends on the Support library rather than relying on TableGen's
transitive dependency.

llvm-svn: 143532
2011-11-02 05:04:43 +00:00
Bob Wilson 1d9269a8d6 Check for homogeneous aggregate return values with ARM's AAPCS-VFP ABI.
llvm-svn: 143530
2011-11-02 04:51:36 +00:00
Eli Friedman 055c970839 Add an option to emulate the strange Apple gcc behavior of #pragma pack.
<rdar://problem/10374763>

llvm-svn: 143527
2011-11-02 01:53:16 +00:00
Fariborz Jahanian 3018b95093 objc: warn if a readonly property has a setter attribute too.
// rdar://10357768

llvm-svn: 143518
2011-11-01 23:02:16 +00:00
Anna Zaks 49ea5bf562 [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).

llvm-svn: 143517
2011-11-01 22:41:19 +00:00
Anna Zaks 9e82c62222 [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)

llvm-svn: 143516
2011-11-01 22:41:14 +00:00
Anna Zaks bfb3520fc5 [analyzer] Make sure the child builder use temporary destination sets
The parent and child builders should not share node sets.

llvm-svn: 143515
2011-11-01 22:41:09 +00:00
Anna Zaks 6d319489df [analyzer] BranchNodeBuilder should not generate autotransitions.
This fixes radar://10367606

llvm-svn: 143514
2011-11-01 22:41:06 +00:00
Anna Zaks 1c887b35fb [analyzer] CheckerContext::getPredecessor() cleanup
Remove unnecessary calls to CheckerContext::getPredecessor() + Comments.

llvm-svn: 143513
2011-11-01 22:41:01 +00:00
Anna Zaks 658f977dba [analyzer] Remove the CheckerContext's destructor.
llvm-svn: 143512
2011-11-01 22:40:55 +00:00
Eli Friedman 61108f2378 Add missing export. Spotted by Leandro Melo.
llvm-svn: 143508
2011-11-01 22:25:07 +00:00
Douglas Gregor c3ae7c363e When we run into a constructor or destructor that is defined in the
wrong class, make sure to drop it immediately; we don't want that
constructor to be available within the DeclContext. Fixes
<rdar://problem/9677163>.

llvm-svn: 143506
2011-11-01 22:13:30 +00:00
Richard Smith 1a77e8d10d Fix r143463 to test what it was intended to test.
llvm-svn: 143505
2011-11-01 21:48:46 +00:00
Douglas Gregor fe0055e6c8 When we see an out-of-line definition of a member class template that
does not match any declaration in the class (or class template), be
sure to mark it as invalid. Fixes PR10924 / <rdar://problem/10119422>.

llvm-svn: 143504
2011-11-01 21:35:16 +00:00
Sebastian Pop 8188c8a1f3 rename getHostTriple into getDefaultTargetTriple in clang
llvm-svn: 143503
2011-11-01 21:33:06 +00:00
Richard Smith cecf184e64 When constant-folding, don't look at the initializer of a global const variable
if it's marked as weak: that definition may not end up being used.

llvm-svn: 143496
2011-11-01 21:06:14 +00:00
Richard Smith 1f1f2d8ca3 Temporarily disable lvalue-to-rvalue conversions on const pointers while an
apparent miscompile triggered by this is investigated. This is essentially a
revert of r143298.

llvm-svn: 143491
2011-11-01 20:38:59 +00:00
Tanya Lattner fa7d9360f0 Do not create sub_dirs. This breaks the CSS links for the website and produces really long URLS.
llvm-svn: 143487
2011-11-01 20:09:03 +00:00
Argyrios Kyrtzidis 1f49cda14f [libclang] Fix non-darwin buildbots.
llvm-svn: 143477
2011-11-01 19:47:41 +00:00
Fariborz Jahanian ab92b753d6 Find copy constructor needed to copy an rvalue reference
c++ object into block descriptor. // rdar://9971124

llvm-svn: 143475
2011-11-01 18:57:34 +00:00
Matt Beaumont-Gay 3e59facf65 Silence a warning in -Asserts builds
llvm-svn: 143471
2011-11-01 18:10:22 +00:00
Ted Kremenek 5d6044e413 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.
llvm-svn: 143470
2011-11-01 18:08:35 +00:00
Argyrios Kyrtzidis 244ce8b204 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.

llvm-svn: 143465
2011-11-01 17:14:15 +00:00
Argyrios Kyrtzidis b9689bb46f [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

llvm-svn: 143464
2011-11-01 17:14:12 +00:00
Richard Smith fec0992aca Implement C++11 'constexpr calls must return constant expressions' rule, and
perform the code simplifications this rule allows.

llvm-svn: 143463
2011-11-01 16:57:24 +00:00
Sebastian Redl 72ef7bc2b5 Enable function call and some overload resolution with parameters of aggregate class type and initializer list arguments.
llvm-svn: 143462
2011-11-01 15:53:09 +00:00
Eli Friedman 86fe42d184 Correct test for additional comment line.
llvm-svn: 143436
2011-11-01 04:46:08 +00:00
Eli Friedman e1f2ce8fd3 Mark test as requiring x86 backend.
llvm-svn: 143427
2011-11-01 03:48:36 +00:00
Eli Friedman 97ed64081d Don't depend on system includes in test.
llvm-svn: 143426
2011-11-01 03:35:57 +00:00
Eli Friedman 3ba20c1571 Make test work with ARM C++ ABI.
llvm-svn: 143425
2011-11-01 03:30:32 +00:00
Eli Friedman fc08bdcc57 Tests for UTF-8 encoding in strings in source code. Patch by Seth Cantrell.
llvm-svn: 143418
2011-11-01 02:26:36 +00:00
Eli Friedman fcec630a57 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.

llvm-svn: 143417
2011-11-01 02:23:42 +00:00
Eli Friedman 703e7153af 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.

llvm-svn: 143416
2011-11-01 02:14:50 +00:00
Eli Friedman 2ae0e1e279 Move ConvertUTF8toUTF32 out of #if 0, in preparation for a patch which needs it.
llvm-svn: 143415
2011-11-01 02:10:54 +00:00
Tobias Grosser 1a5307c7cc Add LinkAllPasses to clang
This patch ensures that no passes are deleted from clang, such that the loading
of plugins does not fail because of passes being unavailable.  This increases
the size of the clang binary from 43029853 to 43915291 bytes (around 2%).

llvm-svn: 143414
2011-11-01 01:34:59 +00:00
Douglas Gregor a7efb88baa Add __has_feature(cxx_raw_string_literals) and
__has_feature(cxx_unicode_literals), from Michel Morin!

llvm-svn: 143412
2011-11-01 01:23:44 +00:00
Douglas Gregor 3c469769a2 Add __has_feature(cxx_defaulted_functions) for querying "defaulted
functions", from Michel Morin!

llvm-svn: 143411
2011-11-01 01:19:34 +00:00
Douglas Gregor d73f3ddb44 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).

llvm-svn: 143410
2011-11-01 01:16:03 +00:00
Fariborz Jahanian f0cda63975 Adds IRGen support for captured rvalue references in blocks.
In this case, temporary value is copied into block descriptor
as their own copy to work on. // rdar://9971124

llvm-svn: 143399
2011-10-31 23:44:33 +00:00
Eli Friedman 42fbd62d92 Some minor comment changes in constant-folding comparisons.
llvm-svn: 143391
2011-10-31 22:54:30 +00:00
Eli Friedman c6be94b3de Don't try to fold comparisons between the address of an object and an arbitrary integer constant. Fixes regression from r143334.
llvm-svn: 143374
2011-10-31 22:28:05 +00:00
Ted Kremenek ce6a5718ce [libclang] Tweak internals of CXSourceLocation to allow an alternate implementation if the lowest bit of ptr_data[0] is not 0. This
is prep for work on serialized diagnostics.

llvm-svn: 143373
2011-10-31 22:23:51 +00:00
Ted Kremenek 4c4f08d555 [libclang] Move implementation of functions for manipulation CXSourceLocations and CXSourceRanges into a separate file.
llvm-svn: 143370
2011-10-31 22:05:42 +00:00
Ted Kremenek bb2c7101b5 [libclang] Add CXDiagnosticImpl to represent a super class for the implementation backing a CXDiagnostic. This allows CXStoredDiagnostic
to be just one possible implementation of a CXDiagnostic.

llvm-svn: 143368
2011-10-31 21:40:19 +00:00
Argyrios Kyrtzidis 3689337c8e Revert r143342. Caching of code-completion results was intentionally placed in "reparse"
because we don't want to take this performance hit when doing code completion

Log of r143342:
Move caching of code-completion results from ASTUnit::Reparse to ASTUnit::CodeComplete,
so that it will happen when we are doing code-completion, not reparsing.

llvm-svn: 143367
2011-10-31 21:25:31 +00:00
Eli Friedman 90a2cdf1fb Add missing lvalue-to-rvalue conversion.
llvm-svn: 143364
2011-10-31 20:59:03 +00:00
Richard Smith dd78544d44 Refactoring and test for r143360. Support for array rvalue to pointer decay is
needed for C++11, and will follow later.

llvm-svn: 143363
2011-10-31 20:57:44 +00:00
Richard Smith fdc6a5956a Temporary fix for assert while evaluating array-to-pointer decay on array
rvalue. Test and better fix to follow.

llvm-svn: 143360
2011-10-31 20:20:33 +00:00
Fariborz Jahanian d01ddd1d07 Improve text of a diagnostic.
llvm-svn: 143353
2011-10-31 17:27:06 +00:00
Anders Carlsson 2f1a6c3f01 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.
llvm-svn: 143350
2011-10-31 16:27:11 +00:00
Axel Naumann a24f2c8875 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.

llvm-svn: 143347
2011-10-31 11:02:24 +00:00
Chandler Carruth 4c042fe667 Simplify the set of directories we look for on multiarch systems.
I don't have any Debian system with one of these currently, and it seems
unlikely for one to show up suddenly. We can add more patterns here if
they become necessary.

llvm-svn: 143346
2011-10-31 09:06:40 +00:00
Chandler Carruth 68ed0ae51c Add "just one more" include path to the monstrosity that is our header
search logic. The Debian multiarch seems to have completely changed from
when these were originally added, and I'd like to remove a bunch of
them, but I'll be lazy and delay that until this logic is hoisted into
the driver where it belongs.

This should resolve PR11223.

llvm-svn: 143345
2011-10-31 08:42:27 +00:00
Chandler Carruth fb7fa24e5c Fix part of PR11223 and probably a few dups as well. This teaches the
library search logic to "properly" handle multiarch installations. I've
tested this on both Debian unstable and the latest Ubuntu which both use
this setup, and this appears to work largely the same way as GCC does.
It isn't exactly the same, but it is close enough and more principled in
its behavior where it differs. This should resolve any failures to find
'crt1.o' etc on Debian-based Linux distributions. If folks find more
cases where we fail, please file bugs and CC me.

Test cases for all of the debian silliness are waiting both to simplify
the process of merging these down into the 3.0 release, and because
they're so crazy I haven't yet been able to really produce a fake tree
that represents what we need to test for. I'll eventually add them
though.

llvm-svn: 143344
2011-10-31 08:42:24 +00:00
Argyrios Kyrtzidis 3b36df5556 Fix the source range for ObjCInterfaces that are forward decls.
llvm-svn: 143343
2011-10-31 07:20:23 +00:00
Argyrios Kyrtzidis 1b544e3cf0 Move caching of code-completion results from ASTUnit::Reparse to ASTUnit::CodeComplete,
so that it will happen when we are doing code-completion, not reparsing.

llvm-svn: 143342
2011-10-31 07:20:19 +00:00
Argyrios Kyrtzidis 6fb6003aad [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.

llvm-svn: 143341
2011-10-31 07:20:15 +00:00
Argyrios Kyrtzidis 6c798bebc1 [PCH] For ASTReader's FileDeclIDs also associate the Module that the
local DeclIDs came from.

llvm-svn: 143340
2011-10-31 07:20:08 +00:00
Argyrios Kyrtzidis 98b26201ab Introduce SourceManager::isLocalFileID/isLoadedFileID functions.
llvm-svn: 143339
2011-10-31 07:20:03 +00:00
Argyrios Kyrtzidis e54568d657 Have the ASTUnit associate the local declarations that get parsed with the file
that contains them.

llvm-svn: 143338
2011-10-31 07:19:59 +00:00
Argyrios Kyrtzidis f3068a73f7 [libclang] Rename VisitIncludedPreprocessingEntries -> VisitIncludedEntities
llvm-svn: 143337
2011-10-31 07:19:54 +00:00
Richard Smith 4e4c78ffff C++11 generalized constant expression handling: evaluation support for
materialized temporaries.

llvm-svn: 143335
2011-10-31 05:52:43 +00:00
Richard Smith 83c682115b C++11 generalized constant expressions: evaluate equality comparisons between
arbitrary pointers, if those pointers don't point to weak objects or literals.

llvm-svn: 143334
2011-10-31 05:11:32 +00:00
Tobias Grosser 3510e999c4 cindex.py: Remove more ternary operator + whitespace fixes
Another batch of ternary operators and some whitespace fixes
(Getting in sync with the clang_complete version of this file)

llvm-svn: 143330
2011-10-31 02:06:50 +00:00
Richard Smith 8b3497ee54 C++11 generalized constant expressions: support pointer comparisons where the
result is not unspecified.

llvm-svn: 143329
2011-10-31 01:37:14 +00:00
Nick Lewycky dd424a5bc4 Turn on the new .file directive when appropriate, instead of turning it off.
llvm-svn: 143327
2011-10-31 01:06:42 +00:00
Tobias Grosser 237f5a07fa clang.py: Remove use of ternary operators
This change is necessary to make this file python 2.4 compatible.

llvm-svn: 143324
2011-10-31 00:49:07 +00:00
Tobias Grosser e15496f1d7 cindex.py: Allow to create a cursor from file/row/column
We add a constructor to create a SourceLocation from a position in
a file and we use this SourceLocation to retrieve a cursor.

llvm-svn: 143322
2011-10-31 00:31:32 +00:00
Tobias Grosser 80c4b81f54 cindex.py: Add File.create_from_name()
llvm-svn: 143321
2011-10-31 00:07:19 +00:00
Richard Smith 390cd49906 Fix assert on constant expression evaluation of floating point increment.
llvm-svn: 143320
2011-10-30 23:17:09 +00:00
Peter Collingbourne f1d76db466 Add support for lazily linking bitcode files (using a new
-mlink-bitcode-file flag), and more generally llvm::Modules, before
running optimisations.

llvm-svn: 143314
2011-10-30 17:30:44 +00:00
Roman Divacky ce253d89a2 Add support for sse4a and enable it for amdfam10 cpu.
llvm-svn: 143312
2011-10-30 13:47:56 +00:00
Jim Goodnow II 921b9f52f4 Fixed CXX struct and class initialization printing to support 'move'
type constructors.

llvm-svn: 143309
2011-10-30 11:17:39 +00:00
Roman Divacky 43eb6f8aeb Add support for amdfam10 cpu.
llvm-svn: 143305
2011-10-30 07:48:46 +00:00
Bob Wilson d32fba2379 Stop disabling integrated assembler with -static. <rdar://problem/10175391>
The integrated assembler seems to be working pretty well for -static code
now, so remove the hacks to disable it.

llvm-svn: 143304
2011-10-30 00:20:28 +00:00
Richard Smith 9c8d1c5c64 Don't crash if a GCC binary conditional is used in a constant expression on an
integer-cast pointer value.

llvm-svn: 143299
2011-10-29 22:55:55 +00:00
Richard Smith 35a1f85466 constexpr evaluation: allow lvalue-to-rvalue conversion on any literal type, not
just integers and floating point types. Since we don't support evaluating class
types or performing lvalue-to-rvalue conversions on array elements yet, this
just means pointer types right now.

llvm-svn: 143298
2011-10-29 21:53:17 +00:00
Richard Smith 0b0a0b6174 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.

llvm-svn: 143296
2011-10-29 20:57:55 +00:00
Abramo Bagnara 254b63068a Fixed FriendDecl source locations.
llvm-svn: 143295
2011-10-29 20:52:52 +00:00
Argyrios Kyrtzidis 9780553ef0 Use LIBCLANG_NOTHREADS instead of CINDEXTEST_NOTHREADS inside libclang,
so the c-index-test one can be enabled without affecting libclang.

llvm-svn: 143288
2011-10-29 19:32:39 +00:00
Richard Smith 7b553f1b19 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.

llvm-svn: 143263
2011-10-29 00:50:52 +00:00
Ted Kremenek 4610ea2bcf 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.

llvm-svn: 143259
2011-10-29 00:12:39 +00:00
Fariborz Jahanian 244b187d22 objc-arc: desugar certain type and improve on diagnostic for
ownership qualifier cast which won't work.
// rdar://10244607

llvm-svn: 143258
2011-10-29 00:06:10 +00:00
Richard Smith 53cafabac0 Add test missed from r143234.
llvm-svn: 143257
2011-10-29 00:03:08 +00:00
Argyrios Kyrtzidis 7362e9bacb [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..

llvm-svn: 143256
2011-10-28 23:57:47 +00:00
Argyrios Kyrtzidis df53da8725 [PCH] In ASTWriter::associateDeclWithFile don't bother finding the file loc
if we are not interested in the decl.

llvm-svn: 143255
2011-10-28 23:57:43 +00:00
Richard Smith 472d495372 Fix assertion in constant expression evaluation. The LHS of a floating-point
binary operator isn't an rvalue if it's an assignment operator.

llvm-svn: 143250
2011-10-28 23:26:52 +00:00
Douglas Gregor dba74af1b8 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.

llvm-svn: 143248
2011-10-28 23:11:43 +00:00
Douglas Gregor 2c4542d3ec Give __STDC_VERSION__ the value 201001L when we're in C1x mode. The
committee hasn't set a value for __STDC_VERSION__ yet, so this is a
placeholder. But at least it's > 199901L.

llvm-svn: 143245
2011-10-28 23:02:54 +00:00
Argyrios Kyrtzidis a109e00bba [libclang] Introduce use of CINDEXTEST_FAILONERROR environment variable which, if set,
will cause c-index-test to return as failed if a compiler error occurred.

llvm-svn: 143243
2011-10-28 22:54:36 +00:00
Argyrios Kyrtzidis d92ced00b1 [libclang] Check for environment variable CINDEXTEST_NOTHREADS in clang_reparseTranslationUnit.
llvm-svn: 143242
2011-10-28 22:54:33 +00:00
Argyrios Kyrtzidis b12986f1cb Make -error-on-deserialized-decl work correctly by correctly delegating to
the previous ASTDeserializationListener.

llvm-svn: 143241
2011-10-28 22:54:31 +00:00