Commit Graph

21733 Commits

Author SHA1 Message Date
Anders Carlsson 9fcfc3a32e Update xcode project
llvm-svn: 99860
2010-03-30 02:08:20 +00:00
Ted Kremenek dbb8cd1d34 Cache results computed by CGDebugInfo::getOrCreateFile() in a DenseMap.
This reduces '-c -g' time on one file in 403.gcc by 12%.

llvm-svn: 99857
2010-03-30 00:27:51 +00:00
Douglas Gregor a55530e591 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.

llvm-svn: 99854
2010-03-29 23:56:53 +00:00
Douglas Gregor 8933623b91 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>.

llvm-svn: 99849
2010-03-29 23:34:08 +00:00
Gabor Greif bf82f94d35 provide a simpler way to get to the headers
llvm-svn: 99843
2010-03-29 21:36:06 +00:00
Douglas Gregor 7ec3d11d16 Exit early from the simple form of Sema::RequireNonAbstractType(), for
a 2.47% speedup in 403.gcc.

llvm-svn: 99830
2010-03-29 20:28:52 +00:00
Anders Carlsson e47380fb19 When collecting virtual bases it's very important to use the canonical type of the base class. Otherwise, we might add the same virtual base class twice if the virtual base is an instantiated template. Fixes PR6251.
llvm-svn: 99829
2010-03-29 19:49:09 +00:00
Ted Kremenek ac031880af Remove FIXME comment.
llvm-svn: 99828
2010-03-29 19:10:41 +00:00
Ted Kremenek 23c29f0cbe Change 'TypeCache' from being an std::map to a llvm::DenseMap. This reduces codegen time
on one .i file from 403.gcc by 0.5%.

llvm-svn: 99823
2010-03-29 18:29:57 +00:00
Chris Lattner bf2803fb20 add support for -MQ flag to quote targets in dependency file,
PR6661, patch by Ori Avtalion!

llvm-svn: 99821
2010-03-29 17:55:58 +00:00
Chris Lattner 5902e7bb22 emit signed integer subtractions as 'sub nsw', patch by
Anton Yartsev!

llvm-svn: 99817
2010-03-29 17:28:16 +00:00
Anders Carlsson eba1a60ef0 Another vtable layout fix, making us match gcc better.
llvm-svn: 99812
2010-03-29 15:08:41 +00:00
Douglas Gregor c48a10d652 Support __attribute__((packed)) (along with other attributes) at the
end of a struct/class/union in C++, from Justin Bogner!

llvm-svn: 99811
2010-03-29 14:42:08 +00:00
Anders Carlsson cb6207f723 Handle pure virtual member functions.
llvm-svn: 99807
2010-03-29 05:40:50 +00:00
Anders Carlsson abb20e6249 Fix a nasty bug in the virtual base computation which would lead to us initializing virtual bases in the wrong order.
llvm-svn: 99806
2010-03-29 05:13:12 +00:00
Rafael Espindola 8756268ee5 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 .

llvm-svn: 99805
2010-03-29 03:39:46 +00:00
Anders Carlsson a627ac7ee6 More vtable work - it's not possible to use the new vtable code for everything by setting a flag inside CGVtable.cpp. My plan is to run some tests and bootstrap and once that's done flip the bit.
llvm-svn: 99804
2010-03-29 03:38:52 +00:00
Anders Carlsson 5a9754187d More magic.
llvm-svn: 99803
2010-03-29 03:26:49 +00:00
Anders Carlsson 473444e05c Sprinkle some sed dust over check-ztt to make it work with newer clang asm output. (I am not a sed expert so this might be terribly inefficient :)
llvm-svn: 99802
2010-03-29 03:21:40 +00:00
Anders Carlsson 800ded68b5 Only add thunks for the most derived class. This fixes some link errors I was seeing in files generated by the vtable tester utility.
llvm-svn: 99801
2010-03-29 02:53:58 +00:00
Anders Carlsson 383f4cc8b9 Flip the switch to always get vtables from the VTT when necessary, I've verified that clang bootstraps with this.
llvm-svn: 99800
2010-03-29 02:38:51 +00:00
Anders Carlsson 2d016af623 Use the newly added function in the VTT builder.
llvm-svn: 99799
2010-03-29 02:14:35 +00:00
Anders Carlsson f6f24c609b Cleanup, no functionality change.
llvm-svn: 99798
2010-03-29 02:08:26 +00:00
Anders Carlsson 9a97e2ef95 Add the thunks needed by this vtable.
llvm-svn: 99793
2010-03-29 01:38:05 +00:00
Anders Carlsson 848d86e5c4 Make sure to sort the vtable thunks by their vtable index :) With this we now pass the test from http://www.codesourcery.com/public/cxx-abi/abi-examples.html#vtable-ctor successfully.
llvm-svn: 99792
2010-03-29 01:28:05 +00:00
Anders Carlsson 948d3f4ec6 Fix another thinko, so that flags don't depend on previous bases.
llvm-svn: 99791
2010-03-29 01:16:41 +00:00
Anders Carlsson 74d7dfcf8e When generating base ctors/dtors, we need to lookup virtual bases using the vtable.
llvm-svn: 99790
2010-03-29 01:14:25 +00:00
Anders Carlsson 27d86bddfe Fix thinko.
llvm-svn: 99788
2010-03-29 01:12:13 +00:00
Anders Carlsson 5889027ccc Use construction vtables when needed. This is currently guarded by -fdump-vtable-layouts since it doesn't work 100% yet :)
llvm-svn: 99787
2010-03-29 01:08:49 +00:00
Anders Carlsson 8baeaf0a26 Two bug fixes, we weren't updating the thunk index when creating the vtable initializer and we weren't storing the secondary virtual pointer indices.
llvm-svn: 99786
2010-03-29 01:04:16 +00:00
Rafael Espindola 3e69c3ed31 Make default arguments to getFunctionNoProtoType an all or nothing option (as they already are in practise).
llvm-svn: 99785
2010-03-28 22:48:23 +00:00
Rafael Espindola 2ac0582419 Drop default arguments no one is using.
llvm-svn: 99783
2010-03-28 22:19:17 +00:00
Anders Carlsson d589593c93 Reapply r99775 with a fix for a silly bug - we were setting the vtable pointer for all bases, even those without a vtable pointer :)
llvm-svn: 99777
2010-03-28 21:07:49 +00:00
Anders Carlsson fcc9f91287 Looks like I broke self-host again :(.
llvm-svn: 99776
2010-03-28 20:55:21 +00:00
Anders Carlsson 74eab715ae More improvements to setting the vtable pointer. We now no longer set the vtable pointer for non-virtual primary bases. We also do a pre-order traversal of the class hierarchy; this is necessary in order to get the right vbase offset offsets in base ctors/dtors.
llvm-svn: 99775
2010-03-28 20:34:31 +00:00
Anders Carlsson e87fae9afa Factor vtable pointer setting code out into a separate function.
llvm-svn: 99773
2010-03-28 19:40:00 +00:00
Douglas Gregor d5cb1ddb2c 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.

llvm-svn: 99734
2010-03-28 02:42:43 +00:00
Benjamin Kramer c048322523 Checker: random include cleanup.
llvm-svn: 99731
2010-03-27 21:19:47 +00:00
Fariborz Jahanian 2e8074bfc3 Further improvement to point to category
whose protocolls methods needs implementation.

llvm-svn: 99730
2010-03-27 21:10:05 +00:00
Anders Carlsson 174376629a Give thunks the same linkage as their original methods.
llvm-svn: 99729
2010-03-27 20:50:27 +00:00
Fariborz Jahanian 97752f7c95 Improve diagnostics on incomplete implementation
of objc classes; including which methods
need be implemented and where they come from.
WIP.

llvm-svn: 99724
2010-03-27 19:02:17 +00:00
Ted Kremenek 344242f1e4 Remove VS information for analyzer until we have more real support.
llvm-svn: 99720
2010-03-27 16:56:20 +00:00
Kovarththanan Rajaratnam bfc61ea0a7 s/Clangify2010.py/clangify2010.py
llvm-svn: 99712
2010-03-27 08:21:15 +00:00
John McCall 3dc81f77f6 Accumulate all functions and classes that the effective context is
nested within, and suddenly local classes start working.  Wouldn't be
necessary if I hadn't used local classes in Clang in the first place.
Or, well, wouldn't be necessary yet. :)

llvm-svn: 99709
2010-03-27 06:55:49 +00:00
John McCall 2f88d7d72c Implement method friends in class templates and fix a few related problems.
llvm-svn: 99708
2010-03-27 05:57:59 +00:00
Rafael Espindola 6e281ffdc0 Test for the previous commit.
llvm-svn: 99702
2010-03-27 02:52:40 +00:00
Rafael Espindola adcc1d18e2 When given the magic class __cxxabiv1::__fundamental_type_info, produce
the typeinfo for the fundamental types.

Fixes PR6685.

llvm-svn: 99701
2010-03-27 02:52:14 +00:00
Ted Kremenek c59230a7d7 Add initial draft of web page on 'clangifty2010.py' script for analyzing VS projects.
llvm-svn: 99691
2010-03-27 01:06:58 +00:00
John McCall 39ec71f2e9 When mapping restrict to noalias, look for 'restrict' on the parameter variable
instead of the canonical parameter type (which has correctly dropped all such
direct qualifiers).  Fixes PR6695.

llvm-svn: 99688
2010-03-27 00:47:27 +00:00
Ted Kremenek d76197a271 scan-build: set environment variable LDPLUSPLUS to 'c++-analyzer' to correctly link projects
with c++ code.

llvm-svn: 99684
2010-03-27 00:20:01 +00:00
Ted Kremenek 0785d92cae Fix comparison in isDiagnosticInFlight().
llvm-svn: 99667
2010-03-26 23:36:48 +00:00
Douglas Gregor 78d315f646 Remove unused static function
llvm-svn: 99666
2010-03-26 23:25:35 +00:00
John McCall 30837102a2 Put function templates instantiated from friend declarations in the correct
lexical context.  This is required for ADL to work properly;  fixes PR6716.

llvm-svn: 99665
2010-03-26 23:10:15 +00:00
Douglas Gregor 4667effa8b Compare namespaces properly when looking for redeclarations of
namespace aliases. Fixes PR6341.

llvm-svn: 99664
2010-03-26 22:59:39 +00:00
Ted Kremenek 0f250e4c5b Fix NoReturnFunctionChecker to properly look at a function's type
when determining if it returns.  Fixes <rdar://problem/7796563>.

llvm-svn: 99663
2010-03-26 22:57:13 +00:00
Ted Kremenek ee0934e05d Add comment indicating that we intentionally don't add the noreturn
attribute to a FunctionDecl.

llvm-svn: 99662
2010-03-26 22:57:10 +00:00
Douglas Gregor c14922f14a When adding initializers to a constructor, be sure that we are looking
through the bases and fields of the definition of the class in which
the constructor is declared, rather than some other declaration of
that class.

llvm-svn: 99661
2010-03-26 22:43:07 +00:00
Daniel Dunbar 9abbebedc8 Driver/Darwin: Support CCC_ENABLE_NEW_DARWIN_TOOLCHAIN as an environment
override to enable use of the DarwinClang tool chain on all platforms (not just
ARM).

llvm-svn: 99660
2010-03-26 22:41:03 +00:00
John McCall 93cc732ffc Properly account for redeclarations when explicitly instantiating class templates.
What happens here is that we actually turn the first declaration into a
definition, regardless of whether it was actually originally a definition,
and furthermore we do this all after we've instantiated all the declarations.
This exposes a bug in my DefinitionData patch where it was only setting the
DefinitionData for previous declarations, not future declarations.
Fortunately, there's an iterator for that.

llvm-svn: 99657
2010-03-26 21:56:38 +00:00
Douglas Gregor f9edf80c39 When trying to determine whether one operand of a conditional
expression can be converted to the type of another, only apply the
lvalue-to-rvalue conversion to the type of the expression we're
converting, *not* the array-to-pointer or function-to-pointer
conversions. Fixes PR6595.

llvm-svn: 99652
2010-03-26 20:59:55 +00:00
Douglas Gregor 34147278ea Eliminate the non-InitializedEntity PerformCopyInitialization() and
re-route its only caller to the newer
PerformCopyInitialization(). We're down to one remaining caller of
Sema::CheckReferenceInit.

llvm-svn: 99650
2010-03-26 20:35:59 +00:00
Daniel Dunbar e17606d513 Make sure we don't include mm_malloc.h in this test, it includes errno.h which
we aren't always able to find on Win32.

llvm-svn: 99649
2010-03-26 20:17:23 +00:00
Daniel Dunbar 6a6199de67 Fix 80 col violations.
llvm-svn: 99648
2010-03-26 20:17:17 +00:00
Douglas Gregor 838fcc318a Switch semantic analysis of the conditional operator from using
CheckReferenceInit to using the new initialization sequence code.

llvm-svn: 99647
2010-03-26 20:14:36 +00:00
Daniel Dunbar b9e176b0ec Runtime: Install the new libcc_kext.a produced by the clang_darwin compiler-rt
configuration.

llvm-svn: 99641
2010-03-26 19:37:38 +00:00
Daniel Dunbar 16204101df Spell -triple correctly for %clang, not %clang_cc1.
llvm-svn: 99634
2010-03-26 19:02:07 +00:00
Chris Lattner 445a2c7b5c i386-apple-darwin10 implies sse2, this option shouldn't be needed.
llvm-svn: 99627
2010-03-26 17:51:13 +00:00
Chris Lattner 8c5d05a299 fix a case where macro expansion should be disabled, patch by
Abramo Bagnara!

llvm-svn: 99626
2010-03-26 17:49:16 +00:00
Chris Lattner cebeab9f8c merge all the macro disable tests by using filecheck.
llvm-svn: 99625
2010-03-26 17:46:33 +00:00
Chris Lattner 80dbccd1bf fix a bug in paste avoidance which would cause us to accidentally
form a >>=.  Patch by Abramo Bagnara, testcase by me.

llvm-svn: 99624
2010-03-26 17:10:02 +00:00
Chris Lattner 6efe46cced xmmintrin just requires sse2, not sse3.
llvm-svn: 99623
2010-03-26 17:05:16 +00:00
Kovarththanan Rajaratnam bbdaa62fe5 No need to specify ${CMAKE_CURRENT_BINARY_DIR}
llvm-svn: 99622
2010-03-26 16:46:16 +00:00
Gabor Greif 7da63a36f1 add a slight variation of test3, where
argument list seems to be different, but in fact
is semantically equivalent; check that we do not error here

llvm-svn: 99617
2010-03-26 08:26:30 +00:00
Nick Lewycky 3cfe6af8b5 Implement new mangling for vectors.
llvm-svn: 99616
2010-03-26 07:18:04 +00:00
Douglas Gregor f956b35f98 Do not mark the destructor of a function parameter's type. Fixes PR6709.
llvm-svn: 99615
2010-03-26 06:57:13 +00:00
Anders Carlsson aaf8acfea1 Revert r99612 and see if it fixes self-host.
llvm-svn: 99614
2010-03-26 06:35:42 +00:00
Douglas Gregor d829eab92b Add tests for PR6707.
llvm-svn: 99613
2010-03-26 05:57:46 +00:00
Anders Carlsson 6fffc64dd2 Don't initialize virtual pointers for primary bases, they've already been initialized.
llvm-svn: 99612
2010-03-26 05:53:12 +00:00
Douglas Gregor 0a29a05f02 When deducing an integral template argument for a non-type template
parameter, keep the integral value exactly as it was in the source
code rather than trying to convert it to the type of the non-type
template parameter (which may still be dependent!). The value will
then be converted to the appropriate type once we check the resulting
template arguments. Fixes PR6707.

llvm-svn: 99611
2010-03-26 05:50:28 +00:00
John McCall e0b2ddb492 Reapply r99596 with a fix: link an instantiated friend function to its
pattern if it has a body.

llvm-svn: 99610
2010-03-26 04:53:08 +00:00
Anders Carlsson 1f9348c1fc Simplify InitializeVtablePtrs in preparation of making it work with construction vtables.
llvm-svn: 99609
2010-03-26 04:39:42 +00:00
Anders Carlsson f1a994ce33 Add and implement CodeGenVTables::getSecondaryVirtualPointerIndex (not used yet).
llvm-svn: 99608
2010-03-26 04:23:58 +00:00
Anders Carlsson e5d78c03c3 Didn't mean to commit this.
llvm-svn: 99607
2010-03-26 04:14:45 +00:00
Anders Carlsson 92d95f2f7b Use the new vtable layout code for construction vtables.
llvm-svn: 99606
2010-03-26 04:13:46 +00:00
Anders Carlsson 5670d96524 More cleanup.
llvm-svn: 99605
2010-03-26 04:10:39 +00:00
Anders Carlsson a208b3997d Way more VTT builder cleanup.
llvm-svn: 99604
2010-03-26 03:56:54 +00:00
John McCall 1a78217721 Apparently that didn't work. Reverting for now.
llvm-svn: 99601
2010-03-26 02:38:45 +00:00
Douglas Gregor bb3d786213 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.

llvm-svn: 99600
2010-03-26 02:38:37 +00:00
John McCall a5beaf6958 Properly instantiate and link in friend function templates.
llvm-svn: 99596
2010-03-26 02:05:14 +00:00
Ted Kremenek c5260901e9 Update test case since c-index-test now works on invalid sources.
llvm-svn: 99595
2010-03-26 01:34:53 +00:00
Ted Kremenek 014e70b797 Return translation units from clang_createTranslationUnitFromSource()
if even they contain errors.

llvm-svn: 99594
2010-03-26 01:34:51 +00:00
Anders Carlsson 45bd753b4a More VTT builder cleanup.
llvm-svn: 99588
2010-03-26 00:58:21 +00:00
Eric Christopher bd9a3aecd6 This is just a simple v4si * v4si, make it so.
llvm-svn: 99587
2010-03-26 00:51:28 +00:00
Anders Carlsson c1b4747d5a More VTT cleanup.
llvm-svn: 99586
2010-03-26 00:50:17 +00:00
Douglas Gregor a14cb9fd38 Revert attempted fix for integral template arguments. It seems to have broken tramp3d-v4.
llvm-svn: 99583
2010-03-26 00:39:40 +00:00
Rafael Espindola 5b33408481 Mark virtual methods that are used in tables included in VTTs as used.
Fixes PR6706.

llvm-svn: 99582
2010-03-26 00:36:59 +00:00
Anders Carlsson e67698bd73 Start cleaning up the VTT builder to make it work more like the VTable builder.
llvm-svn: 99581
2010-03-26 00:35:45 +00:00
Anders Carlsson 382a96550b Remove some VTT builder arguments that were always zero.
llvm-svn: 99576
2010-03-26 00:11:51 +00:00
Douglas Gregor 63eed63312 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💯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;
                       ^

llvm-svn: 99561
2010-03-25 22:21:04 +00:00
Douglas Gregor 210b590562 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.

llvm-svn: 99560
2010-03-25 22:17:48 +00:00