Commit Graph

6502 Commits

Author SHA1 Message Date
Anders Carlsson 4d0729a7cc Figured out why the test was failing, this will hopefully fix it.
llvm-svn: 97336
2010-02-27 19:00:53 +00:00
Anders Carlsson 2b381bbb5c Don't add this adjustments for pure virtual member functions.
llvm-svn: 97334
2010-02-27 18:16:50 +00:00
Anders Carlsson ec27c49d6c XFAIL this for now. I have no idea why this test is failing on some machines. Looks like some sort of whitespace issue in FileCheck.
llvm-svn: 97332
2010-02-27 18:09:05 +00:00
Anders Carlsson e6528ed7c5 Add another test.
llvm-svn: 97329
2010-02-27 16:55:58 +00:00
Anders Carlsson 4068798cbc Finish up the changes to this adjustments.
llvm-svn: 97328
2010-02-27 16:52:49 +00:00
Ted Kremenek 09597b461d Fix crasher caused by setting a bit in a possibly empty bitvector while
doing printf format string checking.  This is a recent regression.

llvm-svn: 97318
2010-02-27 08:34:51 +00:00
Anders Carlsson d2025417ef Fix another vtable layout bug; we weren't looking hard enough for overriden functions when determining if an overrider will ever be used.
llvm-svn: 97306
2010-02-27 06:38:03 +00:00
Anders Carlsson d69b2f93ea Handle vcall offset sharing between destructors.
llvm-svn: 97304
2010-02-27 04:12:52 +00:00
Anders Carlsson b08aaa3e10 Fix a bug where we were generating an unnecessary vtable for a virtual base that's already a primary virtual base.
llvm-svn: 97303
2010-02-27 04:05:52 +00:00
Zhongxing Xu e334bb1a66 Add test case for inlining call analysis.
llvm-svn: 97300
2010-02-27 02:44:37 +00:00
Douglas Gregor b8b9f28e24 Robustify SourceManager::getLocation(), so that it returns an
end-of-line source location when given a column number beyond the
length of the line, or an end-of-file source location when given a
line number beyond the length of the file. Previously, we would return
an invalid location.

llvm-svn: 97299
2010-02-27 02:42:25 +00:00
Ted Kremenek d166819c26 For printf format string checking, add support for positional format strings.
Along the way, coelesce some of the diagnostics.

llvm-svn: 97297
2010-02-27 01:41:03 +00:00
Douglas Gregor beab56e923 Skip dependent virtual base classes; fixes PR6413.
llvm-svn: 97291
2010-02-27 00:25:28 +00:00
John McCall 62abc944d6 At sabre's request, drop the FP bounds diagnostics down to warnings and file
them under -Wbad-literal.  They're still on by default.

llvm-svn: 97284
2010-02-26 23:35:57 +00:00
Fariborz Jahanian 6005bd821c Prevent rewriter crash when variable type is missing.
Fixes radar 7692183.

llvm-svn: 97281
2010-02-26 22:49:11 +00:00
Fariborz Jahanian ce2ea59d2c Fix rewriting of byref variables in nested blocks.
Fixes radar 7692350.

llvm-svn: 97254
2010-02-26 19:55:31 +00:00
Chris Lattner 9c56ec86b2 fix rdar://7683173, rejecting an invalid conditional
llvm-svn: 97253
2010-02-26 19:42:53 +00:00
Ted Kremenek 4a49d9818b 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).

llvm-svn: 97248
2010-02-26 19:18:41 +00:00
Fariborz Jahanian 5743d4d280 Rewriting of imported variable from outer
blocks's argument in the inner block requires special treatment.
Fixes radar 7692419.

llvm-svn: 97244
2010-02-26 19:05:20 +00:00
John McCall 1f476a1783 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.

llvm-svn: 97221
2010-02-26 08:45:28 +00:00
Douglas Gregor c854c66557 An explicit specialization is allowed following an explicit
instantiation so long as that explicit specialization was declared
previously. Fixes PR6160.

llvm-svn: 97210
2010-02-26 06:03:23 +00:00
Douglas Gregor 6642ca217e 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.

llvm-svn: 97209
2010-02-26 05:06:18 +00:00
Fariborz Jahanian ec201dc3c6 Support rewriting of property synthesis with retain/copy
attributes. Fixes radar 7214439.

llvm-svn: 97203
2010-02-26 01:42:20 +00:00
Douglas Gregor e6d276a559 Commit Eli's fix for implicit conversions to array type. Fixes PR6264.
llvm-svn: 97202
2010-02-26 01:17:27 +00:00
Douglas Gregor d2d9da08f3 Make sure to mark constructors, operator new, and operator delete as
used when we instantiate C++ new expressions, delete expressions, and
object-construction expressions. Fixes PR6424, although we can't test
all of it until we finish implementing lookup of "operator delete" for
new expressions (!).

llvm-svn: 97195
2010-02-26 00:38:10 +00:00
Douglas Gregor de550355c1 When we decide to re-use an existing CXXConstructExpr node, make sure
to mark the constructor as referenced. Fixes the narrow issue reported
in PR6424, but there are a few other places that I'll fix before
closing out that PR.

llvm-svn: 97185
2010-02-26 00:01:57 +00:00
Douglas Gregor 6f5f642ca2 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.

llvm-svn: 97177
2010-02-25 22:29:57 +00:00
Anders Carlsson ed7d0e8be8 Fux a bug where we were trying to add overriders for non-virtual bases of virtual bases more than once.
llvm-svn: 97173
2010-02-25 22:18:35 +00:00
Douglas Gregor 83af86a6bc Allow us to compare derived-to-base conversions between a reference
binding and a copy-construction. Fixes an overloading problem in the
Clang-on-Clang build.

llvm-svn: 97161
2010-02-25 19:01:05 +00:00
Fariborz Jahanian 8e3b9db27f Forgot to include nested protocols in collection, resulting in
bogus warning. Fixes radar 7682116.

llvm-svn: 97157
2010-02-25 18:24:33 +00:00
Douglas Gregor 422f155ca3 Don't try to finalize an ill-formed variable or one whose class type is ill-formed. Fixes PR6421
llvm-svn: 97152
2010-02-25 18:11:54 +00:00
John McCall 21b57fa4e5 When comparing two method overload candidates during overload diagnostics,
skip the object argument conversion if either of the candidates didn't
initialize it.

Fixes PR6421, which is such a very straightforward extension of PR6398 that I
should have worked it into the last test case (and therefore caught it then).
Ah well.

llvm-svn: 97135
2010-02-25 10:46:05 +00:00
Chandler Carruth b306bcc266 Fix a really trivial crasher and begin fleshing out one of the namespace test
cases.

llvm-svn: 97134
2010-02-25 09:32:59 +00:00
Chandler Carruth 8fa1e7eec4 Add a new conversion rank to classify conversions between complex and scalar
types. Rank these conversions below other conversions. This allows overload
resolution when the only distinction is between a complex and scalar type. It
also brings the complex overload resolutin in line with GCC's.

llvm-svn: 97128
2010-02-25 07:20:54 +00:00
Ted Kremenek d98d22b9af Enhance the unused ivar checker to not consider an ivar to be accidentally unused
when it is explicitly marked as unused via __attribute__((unused)).

llvm-svn: 97104
2010-02-25 03:26:55 +00:00
Ted Kremenek 6bf658abef Allow __attribute__((unused)) to be applied to ObjC ivars.
llvm-svn: 97103
2010-02-25 03:26:51 +00:00
Douglas Gregor 678f90df09 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.

llvm-svn: 97092
2010-02-25 01:56:36 +00:00
John McCall 65eb879d22 Catch more uses of uninitialized implicit conversion sequences.
When diagnosing bad conversions, skip the conversion for ignored object
arguments.  Fixes PR 6398.

llvm-svn: 97090
2010-02-25 01:37:24 +00:00
Ted Kremenek 8cf9eeb519 Remove test case dependancy on platform headers.
llvm-svn: 97088
2010-02-25 01:16:07 +00:00
Ted Kremenek d55522f02e Add UnixAPIChecker, a meta checker to include various precondition checks for calls
to various unix/posix functions, e.g. 'open()'.

As a first check, check that when 'open()' is passed 'O_CREAT' that it has
a third argument.

llvm-svn: 97086
2010-02-25 00:20:35 +00:00
Fariborz Jahanian 1f7fe2c7f7 Added test case for non-objective-c situation in
my last patch.

llvm-svn: 97075
2010-02-24 22:53:58 +00:00
Fariborz Jahanian 8652be05b7 Implement nasty rewriting of nested blocks when inner
blocks use variables not used in any of the outer blocks.
(Fixes radar 7682149).

llvm-svn: 97073
2010-02-24 22:48:18 +00:00
Douglas Gregor 26623cb13e Add test case for PR6141, which was fixed a few days ago
llvm-svn: 97063
2010-02-24 21:54:27 +00:00
Douglas Gregor f06027db65 Add test for AST importing of C++ namespaces, missing from a prior commit
llvm-svn: 97062
2010-02-24 21:53:36 +00:00
Douglas Gregor 8b1d732f85 Add PCH test for C++ namespaces, missing from a previous commit
llvm-svn: 97061
2010-02-24 21:52:55 +00:00
Douglas Gregor 0d5b0a1e5e 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). 

llvm-svn: 97058
2010-02-24 21:29:12 +00:00
Anders Carlsson a9f633b060 Generate correct vcall offsets when we have a primary virtual base that is not a primary base in the complete class hierarchy.
llvm-svn: 97039
2010-02-24 16:43:12 +00:00
John McCall 6dee473780 References to const int parameters with ICE default arguments are not ICEs.
Fixes PR6373.

llvm-svn: 97037
2010-02-24 09:03:18 +00:00
John McCall 8bf8ac0775 Make this test portable to ABIs that use sret.
llvm-svn: 97035
2010-02-24 08:14:27 +00:00
John McCall 1826980fc8 Fix test case and convert fully to FileCheck.
llvm-svn: 97032
2010-02-24 07:33:39 +00:00