Commit Graph

15112 Commits

Author SHA1 Message Date
Douglas Gregor f58ff32c16 Integral-to-pointer conversions are not always null -> member pointer
conversions. Fixes PR7443.

llvm-svn: 110519
2010-08-07 13:36:37 +00:00
Douglas Gregor 114e55df5b Fix an Objective-C crasher, PR7839.
llvm-svn: 110515
2010-08-07 12:29:18 +00:00
Douglas Gregor 8b2d2fe234 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.

llvm-svn: 110513
2010-08-07 11:51:51 +00:00
John McCall 7cd1d97e33 Inline a special case of EmitAggregateCopy into EmitNullInitialization
to avoid the awesome-but-wrong-in-this-case assertion in the canon EAC.
Fixes PR7834.

Also fix a subtle address-space bug in the memset path.

llvm-svn: 110511
2010-08-07 08:21:30 +00:00
John McCall 853700437b Note that a CXXConstructExpr is zeroing when dumping it.
llvm-svn: 110510
2010-08-07 06:38:55 +00:00
John McCall cf14216509 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.

llvm-svn: 110507
2010-08-07 06:22:56 +00:00
Chris Lattner 8139c98cf9 Correct -ftrapv to trap on errors, instead of calling the
__overflow_handler entrypoint that David Chisnall made up.
Calling __overflow_handler is not part of the contract of
-ftrapv provided by GCC, and should never have been checked
in in the first place.

According to:
http://permalink.gmane.org/gmane.comp.compilers.clang.devel/8699

David is using this for some of arbitrary precision integer stuff
or something, which is not an appropriate thing to implement on
this.

llvm-svn: 110490
2010-08-07 00:20:46 +00:00
Eli Friedman 964dbda0e9 PR7837: For qualified id's, make sure the decl context is complete if not
dependent in ActOnIdExpression.  (This issue only shows up with member
operators because an operator is never a type.)

llvm-svn: 110486
2010-08-06 23:41:47 +00:00
Tom Care 925501c548 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

llvm-svn: 110482
2010-08-06 22:23:07 +00:00
Ted Kremenek 0bbf24d579 Fix 80 col. violations.
llvm-svn: 110473
2010-08-06 21:12:55 +00:00
Ted Kremenek 63dc1f4694 Nest variable declaration into into 'if' condition, thus restricting the scope of the variable and condensing the code.
llvm-svn: 110472
2010-08-06 21:12:53 +00:00
Ted Kremenek b0c67c85db Use 'GenerateNode()' instead of 'GenerateSink()' when reporting a leak. A leak is not a hard enough bug to stop analyzing a path.
llvm-svn: 110471
2010-08-06 21:12:49 +00:00
Eli Friedman 165301d38d Initialize variable to work around warning; unfortunately, there isn't any
way to tell gcc "really, values outside the enum aren't valid".

llvm-svn: 110450
2010-08-06 16:37:05 +00:00
Fariborz Jahanian f95e358004 Finishing up block variable layout API by supporting
union type variables and their nesting inside other
aggregate types.

llvm-svn: 110448
2010-08-06 16:28:55 +00:00
Douglas Gregor a49ccfeeb2 The pre-increment/pre-decrement grammar in C++ differs from that in C,
but we were parsing the C grammar. Handle the C++ grammar
appropriately. Fixes PR7794.

llvm-svn: 110445
2010-08-06 14:50:36 +00:00
Douglas Gregor 229c281d37 Remove some incorrect assertions when deduction template arguments in
a template-argument-list. When template template parameters are
involved, we won't already have checked the template-argument-list (it
may not be known yet!). Fixes PR7807.

llvm-svn: 110444
2010-08-06 14:15:26 +00:00
Douglas Gregor 7260905918 Make sure that we diagnose attribute((overloadable)) functions without
prototypes. Fixes PR7738.

llvm-svn: 110443
2010-08-06 13:50:58 +00:00
Douglas Gregor 7617cb8440 Define _INTEGRAL_MAX_BITS for the win32 and win64 targets, from Per Lindén!
llvm-svn: 110442
2010-08-06 12:37:52 +00:00
Abramo Bagnara 7c5dee4280 Template keyword should not be ignored building a QualifiedTemplateName.
llvm-svn: 110441
2010-08-06 12:11:11 +00:00
Douglas Gregor d26129a98a Fix the #include search path when reading from stdin, from Jon Simons!
Fixes PR4897.

llvm-svn: 110440
2010-08-06 12:06:13 +00:00
Douglas Gregor 2588691a69 Diagnose the use of "inline" on block-scope function declarations in
C++, from Andrea Nall!

llvm-svn: 110439
2010-08-06 11:44:10 +00:00
Douglas Gregor 59e8b3bd7b Introduce implicit conversions between AltiVec vectors and GCC
vectors, from Anton Yartsev!

llvm-svn: 110437
2010-08-06 10:14:59 +00:00
Argyrios Kyrtzidis 249179cd73 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.

llvm-svn: 110436
2010-08-06 09:47:24 +00:00
Nick Lewycky 2667f1d409 Remove ElseScope which is also dead code now.
llvm-svn: 110433
2010-08-06 06:50:17 +00:00
Nick Lewycky 60ecc522e0 Remove the DeclaredInCondition bit now that it's no longer used.
llvm-svn: 110432
2010-08-06 05:43:55 +00:00
Zhongxing Xu 44207a9e9f If all nodes are sunk, bail out early. This make the later check for checkersEvaluated really meaningful.
llvm-svn: 110430
2010-08-06 04:20:59 +00:00
Nate Begeman ad5dd42817 vdup_lane was missing
<rdar://problem/8278732>

llvm-svn: 110420
2010-08-06 01:24:57 +00:00
Eli Friedman e83d2b7649 Attempt to fix uninitialized value warning reported on cfe-commits.
llvm-svn: 110418
2010-08-06 01:17:25 +00:00
John McCall dc9796e23a Properly pop out of Objective-C method declarations when they are (ill-formedly)
found within contexts other than the translation unit.

llvm-svn: 110417
2010-08-06 00:46:05 +00:00
Sebastian Redl e98428d7bd Add an environment variable that makes libclang use chaining for PCH.
llvm-svn: 110414
2010-08-06 00:35:11 +00:00
Zhongxing Xu cf61a0639d Don't assert on a file stream if its state is not tracked. Fix pr7831.
llvm-svn: 110392
2010-08-05 23:24:13 +00:00
Jordy Rose afdb053618 When checking if a buffer access is valid, first make sure the buffer has a valid Loc. Fixes PR7830.
llvm-svn: 110390
2010-08-05 23:11:30 +00:00
Bruno Cardoso Lopes 3d19889ca8 Fix AVX 256-bit intrinsics headers by using the right cast type while dealing with logical ops
llvm-svn: 110389
2010-08-05 23:04:58 +00:00
John McCall 491462425a Don't crash when mangling empty anonymous unions. We never actually *need*
these, but it's convenient to mangle them when deferring them (in the 99.99%
case where it's not an anonymous union, of course).

llvm-svn: 110381
2010-08-05 22:02:13 +00:00
Sebastian Redl f03cdc5d27 Collect namespaces that need updating in a PCH chain. WIP
llvm-svn: 110378
2010-08-05 21:22:19 +00:00
Fariborz Jahanian 903aba39ee Add support for block imported struct variable layout info.
(objc gc and blocks in NeXt runtime).

llvm-svn: 110377
2010-08-05 21:00:25 +00:00
John McCall 5513fce96b 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.

llvm-svn: 110374
2010-08-05 20:39:18 +00:00
Chris Lattner dc7ee3cd6b fix the va_list definition for vc++64, patch by Cameron Esfahani!
llvm-svn: 110370
2010-08-05 20:04:20 +00:00
Sebastian Redl 08aca90253 Write various C++-specific records to chained PCHs. Tests will come later.
llvm-svn: 110357
2010-08-05 18:21:25 +00:00
John McCall 95bde46bbb Argument evaluation order is not guaranteed. Split these out to force an order.
llvm-svn: 110354
2010-08-05 18:11:10 +00:00
Tom Care 16ba7c652e Fixed logic error in UnreachableCodeChecker's marking algorithm that would sometimes allow for multiple sequential statements to be flagged.
llvm-svn: 110353
2010-08-05 17:53:44 +00:00
John McCall a9731a4179 Fix a major bug with -ftrapv and ++/--. Patch by David Keaton!
llvm-svn: 110347
2010-08-05 17:39:44 +00:00
John McCall 0f8ccc4938 Allow multiple __declspec attributes after a class-key.
Patch by Francois Pichet!

llvm-svn: 110344
2010-08-05 17:13:11 +00:00
Fariborz Jahanian d652ac82b0 For now skip over aggregate non-byref block variables.
(objc gc specific).

llvm-svn: 110340
2010-08-05 16:13:18 +00:00
Fariborz Jahanian 89f3721dee Trying to unbreak buildbot.
llvm-svn: 110339
2010-08-05 15:52:12 +00:00
Ted Kremenek 9c22219d9c Revert r110317, and add a comment why the assertion is not an invariant.
llvm-svn: 110330
2010-08-05 15:03:30 +00:00
Eli Friedman 06dcfd94c8 Flip the switch to use OffsetOfExpr unconditionally; feel free to revert if
this breaks something.

I'll wait a few days before cleaning out UnaryOperator::OffsetOf.

llvm-svn: 110328
2010-08-05 10:15:45 +00:00
Eli Friedman 74ef7cf144 PR7769: Fix references to anonymous structs/unions in base classes in
offsetof expressions.

llvm-svn: 110327
2010-08-05 10:11:36 +00:00
Eli Friedman d7c7232a1d Add IRGen support for non-constant OffsetOfExpr.
llvm-svn: 110326
2010-08-05 09:58:49 +00:00
Argyrios Kyrtzidis 7f76d11dcc 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.

llvm-svn: 110324
2010-08-05 09:48:16 +00:00