| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
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.
llvm-svn: 70623
|
| |
|
|
| |
llvm-svn: 70620
|
| |
|
|
|
|
|
| |
the runtime version number onto it, so that the debugger knows it's an objc
interface, not a C struct. rdar://6848435
llvm-svn: 70618
|
| |
|
|
| |
llvm-svn: 70617
|
| |
|
|
|
|
|
|
| |
rdar://6848435,
several other fixes coming.
llvm-svn: 70616
|
| |
|
|
|
|
| |
enough at determining whether an expression is a bitfield or not, yet.
llvm-svn: 70613
|
| |
|
|
|
|
|
| |
expressions not yet properly handled by the CFGBuilder. This failure resulted in
a null CFGBlock* being used in rare cases (causing a crash).
llvm-svn: 70612
|
| |
|
|
| |
llvm-svn: 70601
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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!
llvm-svn: 70597
|
| |
|
|
| |
llvm-svn: 70595
|
| |
|
|
| |
llvm-svn: 70586
|
| |
|
|
|
|
| |
GRCoreEngine. This tends to result in shorter paths for pathological cases.
llvm-svn: 70585
|
| |
|
|
| |
llvm-svn: 70584
|
| |
|
|
| |
llvm-svn: 70579
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>.
llvm-svn: 70578
|
| |
|
|
| |
llvm-svn: 70571
|
| |
|
|
|
|
|
|
| |
class/protocol and implementation which could be
an imm. implementation or down in the inheritance
hierarchy.
llvm-svn: 70568
|
| |
|
|
| |
llvm-svn: 70567
|
| |
|
|
| |
llvm-svn: 70566
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Don't layer TypedViewRegions on top of any region except
SymbolicRegions and AllocaRegions. This follows from my offline
discussion within Zhongxing about how TypedViewRegions really only
represent memory getting re-appropriated for a new purpose.
Fallout from this change:
- Move test case from xfail_rdar_6440393.m to misc-ps-64.m
(it now passes).
- test/Analysis/fields.c now fails for region store (crash).
Marking XFAIL.
- test/Analysis/rdar-6441136-region.c now fails (only runs with region store).
Marking XFAIL.
Diagnosis: The analyzer now correctly identifies an early out-of-bounds memory
access then the one flagged:
rdar-6541136-region.c:17:3: warning: Load or store into an out-of-bound memory position.
*p = 1;
^~
Changing the line:
char *p = (void*) &wonky[1];
to
char *p = (void*) &wonky[0];
(which should delay the buffer overrun) causes region store to crash, probably
because it expects a TypedViewRegion.
- test/Analysis/casts.c (region store) now fails (crash).
Marking XFAIL.
llvm-svn: 70565
|
| |
|
|
|
|
| |
pointer.
llvm-svn: 70564
|
| |
|
|
| |
llvm-svn: 70563
|
| |
|
|
|
|
| |
base is a pointer.
llvm-svn: 70562
|
| |
|
|
| |
llvm-svn: 70547
|
| |
|
|
|
|
|
|
| |
location context. This allows us to postpone the decision of whether
or not a context should add a control-flow piece to the diagnostics
when inspecting its subexpressions.
llvm-svn: 70545
|
| |
|
|
| |
llvm-svn: 70544
|
| |
|
|
| |
llvm-svn: 70542
|
| |
|
|
|
|
| |
and other pointer-like types.
llvm-svn: 70531
|
| |
|
|
|
|
| |
Radar 6838889
llvm-svn: 70525
|
| |
|
|
| |
llvm-svn: 70523
|
| |
|
|
|
|
| |
<rdar://problem/6841210>.
llvm-svn: 70519
|
| |
|
|
| |
llvm-svn: 70518
|
| |
|
|
|
|
| |
completely.
llvm-svn: 70516
|
| |
|
|
| |
llvm-svn: 70514
|
| |
|
|
|
|
| |
'objc_ownership_release' to the effects on receivers.
llvm-svn: 70507
|
| |
|
|
| |
llvm-svn: 70506
|
| |
|
|
|
|
|
| |
applied to ObjCMethodDecls, not just parameters. This allows one to specific
side-effects on the receiver of a message expression. No checker support yet.
llvm-svn: 70505
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 70504
|
| |
|
|
|
|
| |
the return type and selector. Haven't hooked this up to Sema yet.
llvm-svn: 70501
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
"aligned" attribute. Previously, we were skipping over these
attributes when we jumped directly to the canonical type. Now,
ASTContext::getTypeInfo walks through typedefs and other
"non-canonical" types manually, looking for "aligned" attributes on
typedefs.
As part of this change, I moved the GNU-specific logic (such as
determining the alignment of void or of a function pointer) out of the
expression evaluator and into ASTContext::getTypeInfo.
llvm-svn: 70497
|
| |
|
|
|
|
| |
to match gcc's closely.
llvm-svn: 70493
|
| |
|
|
|
|
| |
constant initializers.
llvm-svn: 70483
|
| |
|
|
| |
llvm-svn: 70481
|
| |
|
|
|
|
| |
have support for __divti3 and friends.
llvm-svn: 70480
|
| |
|
|
| |
llvm-svn: 70475
|
| |
|
|
|
|
| |
matching ObjCMethodDecl exists in the @interface.
llvm-svn: 70474
|
| |
|
|
|
|
| |
ObjCInterfaceDecl, not before.
llvm-svn: 70473
|
| |
|
|
|
|
|
| |
not supported on 32-bit targets, so we can define it to be 128-bit
aligned there too :)
llvm-svn: 70465
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 70464
|
| |
|
|
| |
llvm-svn: 70452
|