Ted Kremenek
ff3a4ff6e9
Use FindReportInEquivalenceClass to identify all the nodes used for the trimmed graph (in BugReporter). This fixes a problem where a leak that happened to occur on both an exit() path and a non-exit() path was getting reported with the exit() path (which users don't care about).
...
This fixes:
<rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit())
llvm-svn: 113524
2010-09-09 19:05:34 +00:00
Douglas Gregor
57df3b4b12
Use temporary files for this test, to see if we can flush out an inexplicable error on Windows
...
llvm-svn: 113493
2010-09-09 16:16:39 +00:00
Douglas Gregor
54e5b13a27
Add proper type-source information to UnaryTypeTraitExpr, including
...
libclang visitation.
llvm-svn: 113492
2010-09-09 16:14:44 +00:00
Ted Kremenek
5f256da834
Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal().
...
The end result is now we eagarly constant-fold symbols in the analyzer that are perfectly constrained
to be a constant value. This allows us to recover some path-sensitivity in some cases by lowering
the required level of reasoning power needed to evaluate some expressions.
The net win from this change is that the false positive in PR 8015 is fixed, and we also
find more idempotent operations bugs.
We do, however, regress with the BugReporterVisitors, which need to be modified to understand
this constant folding (and look past it). This causes some diagnostic regressions in plist-output.m
which will get addressed in a future patch. plist-output.m is now marked XFAIL, while
plist-output-alternate.m now tests that the plist output is working, but with the suboptimal
diagnostics. This second test file will eventually be removed.
llvm-svn: 113477
2010-09-09 07:13:00 +00:00
Ted Kremenek
b8176da314
Check format strings when a called function has more than one FormatAttr (one for 'scanf' and one for 'printf'). Fixes <rdar://problem/8409437>.
...
llvm-svn: 113472
2010-09-09 04:33:05 +00:00
Ted Kremenek
1520dae606
It appears that technically a null format string is not warned under -Wformat-nonliteral, as
...
the function processing the format string can decided whether or not to accept a null format string (e.g., asl_log). Fixes <rdar://problem/8269537>.
llvm-svn: 113469
2010-09-09 03:51:42 +00:00
Ted Kremenek
0f107e4386
Relax __attribute_((nonnull)) checking to allow the attribute on functions with no pointer arguments. GCC doesn't warn
...
in this case, and the attribute is trivially satisfied (and benign). Fixes <rdar://problem/8364828>.
llvm-svn: 113464
2010-09-09 01:17:32 +00:00
Ted Kremenek
5ebb6156d8
Include test case for <rdar://problem/5880430>.
...
llvm-svn: 113458
2010-09-09 00:40:43 +00:00
Fariborz Jahanian
cfddabf5a3
Block ivar layout must assume that the 'isa'
...
field of the block descriptor is GC'able (scanned)
as this what the runtime expects (one can send it
messages). Radar 8394947.
llvm-svn: 113454
2010-09-09 00:21:45 +00:00
Ted Kremenek
f2b0a1bfa0
Enhance -Wunreachable-code to not consider the 'default:' branch of a switch statement live if a switch on an enum value has
...
explicit 'case:' statements for each enum value.
llvm-svn: 113451
2010-09-09 00:06:10 +00:00
Ted Kremenek
50205744c3
Enhance -Wreturn-type to not warn when control-flow is most likely limited by a switch statement explicitly covering
...
all the cases for an enum value.
llvm-svn: 113450
2010-09-09 00:06:07 +00:00
Dawn Perchik
a42039d5eb
Add support for a few MS extensions supported by the Borland compiler
...
(__uuidof, _fastcall, etc.).
llvm-svn: 113434
2010-09-08 22:56:24 +00:00
Douglas Gregor
67da50e18d
When providing a completion for a function/method parameter of block
...
pointer type, actually provide a usable block literal expression.
llvm-svn: 113431
2010-09-08 22:47:51 +00:00
Fariborz Jahanian
5138b62edc
Test removed.
...
llvm-svn: 113428
2010-09-08 22:36:14 +00:00
Fariborz Jahanian
d4ec16ca71
Removed test case.
...
llvm-svn: 113418
2010-09-08 21:55:57 +00:00
Douglas Gregor
8ec5173f9a
Use the new-initialization code for initializing scalars with a
...
function-style cast. Previously, we had a (redundant, incorrect)
semantic-checking path for non-class types, which allowed
value-initialization of a reference type and then crashed.
llvm-svn: 113415
2010-09-08 21:40:08 +00:00
Fariborz Jahanian
db45278cbd
Reverse r113397 until we decide what to do with
...
use of 'struct objc_object*' for 'is' (and others)
in clang.
llvm-svn: 113414
2010-09-08 21:36:35 +00:00
Fariborz Jahanian
40efc0feb4
Fix a crash when overloading id with objc_object*.
...
Radar 8400356.
llvm-svn: 113397
2010-09-08 20:08:18 +00:00
Francois Pichet
9f4f2078d6
Microsoft's __uuidof operator implementation part 1.
...
llvm-svn: 113356
2010-09-08 12:20:18 +00:00
Francois Pichet
4ad4b58639
Allow type definitions inside anonymous struct/union in Microsoft mode.
...
llvm-svn: 113354
2010-09-08 11:32:25 +00:00
Sebastian Redl
02f1eebdc0
Don't give 'global constructor' warnings for function statics, even if they have a direct initializer. Fixes PR8095.
...
llvm-svn: 113344
2010-09-08 04:46:19 +00:00
John McCall
83556c1a80
Put the tautological-comparison-of-unsigned-against-zero warnings in
...
-Wtautological-compare instead of -Wsign-compare, which also implies turning
them on by default.
Restoration of r112877.
llvm-svn: 113334
2010-09-08 02:01:27 +00:00
John McCall
68ff03728a
Implement ARM static local initialization guards, which are more compact than
...
Itanium guards and use a slightly different compiled-in API.
llvm-svn: 113330
2010-09-08 01:44:27 +00:00
Sebastian Redl
a190d3605f
Allow (cv) void and incomplete arrays to be passed to the type traits.
...
Fixes PR8110, and thus PR8109, PR8097, and parts of PR8101, PR8105 and PR8107. Only a few traits have tests for incomplete arrays, since I'm not yet clear what the result for them should be; Howards wants to file a DR to change the standard.
llvm-svn: 113326
2010-09-08 00:48:43 +00:00
Gabor Greif
80c218386f
add a fixit when 'main' does ot return 'int'; review welcome
...
llvm-svn: 113324
2010-09-08 00:31:13 +00:00
Douglas Gregor
2b88c115f9
Provide proper type-source location information for
...
CXXTemporaryObjectExpr, CXXScalarValueInitExpr, and
CXXUnresolvedConstructExpr, getting rid of a bunch of FIXMEs in the
process.
llvm-svn: 113319
2010-09-08 00:15:04 +00:00
Fariborz Jahanian
366a94822b
Local static block variable referecned in its
...
block-literal initializer expression causes IRgen to crash.
This patch fixes by saving it in StaticLocalDecl map
already used for such purposes. (radar 8390455).
llvm-svn: 113307
2010-09-07 23:26:17 +00:00
Daniel Dunbar
53c9ac30f9
tests: Use -ffreestanding when including stdint.h, to avoid platform dependencies.
...
llvm-svn: 113301
2010-09-07 22:54:28 +00:00
Douglas Gregor
0744ef6371
Improve source-location information for CXXNewExpr, by hanging on to
...
the TypeSourceInfo for the allocated type. Fixes PR7501.
llvm-svn: 113291
2010-09-07 21:49:58 +00:00
Ted Kremenek
aba4958db2
Fix null pointer dereference in StreamChecker::Fseek (reported in PR 8081) and simplify surrounding checking logic.
...
llvm-svn: 113282
2010-09-07 20:45:26 +00:00
Tom Care
bc9eaef24c
Re-enabled truncation/extension checking in IdempotentOperationChecker and added a test case.
...
llvm-svn: 113269
2010-09-07 20:27:56 +00:00
Fariborz Jahanian
56603ef7b2
Have Sema check for validity of CGString literal
...
instead of asserting in IRGen. Fixes radar 8390459.
llvm-svn: 113253
2010-09-07 19:38:13 +00:00
John McCall
1ca73da0e6
Improve error recovery when we see ':' and expect a ';'.
...
I, at least, make this typo all the time.
llvm-svn: 113243
2010-09-07 18:31:03 +00:00
Dale Johannesen
2002e1f1bf
Adjust a test that's expecting optimizations to be done
...
on MMX palignr; we don't do this for the intrinsics.
llvm-svn: 113234
2010-09-07 18:11:53 +00:00
Douglas Gregor
a7d6e3d0f5
Provide a specific diagnostic when trying to redefine an "extern
...
inline" function outside of GNU89 mode. Fixes
<rdar://problem/6880464>.
llvm-svn: 113204
2010-09-07 15:51:01 +00:00
Douglas Gregor
45d6bdfa88
Improve recovery when there is a stray ']' or ')' before the ';' at
...
the end of a statement. Fixes <rdar://problem/6896493>.
llvm-svn: 113202
2010-09-07 15:23:11 +00:00
Douglas Gregor
ce66d02877
Improve recovery when a comma is missing between enumerators in an
...
enumeration definition. Fixes <rdar://problem/7159693>.
llvm-svn: 113201
2010-09-07 14:51:08 +00:00
Douglas Gregor
3465e26102
Improve diagnostic and recovery when missing a comma between base or
...
member initializers in a C++ constructor. Fixes <rdar://problem/7796492>.
llvm-svn: 113199
2010-09-07 14:35:10 +00:00
Chris Lattner
03483613c2
Due to asmparser improvements, this error message is now better
...
llvm-svn: 113177
2010-09-06 22:09:27 +00:00
Argyrios Kyrtzidis
d05f3e3730
Fix a C++ PCH problem which was exposed by r113019. CXXBaseOrMemberInitializer's IsWritten and source order is not set.
...
llvm-svn: 113161
2010-09-06 19:04:27 +00:00
Chris Lattner
d7ff9f91bf
remove curly quotes, patch by Dimitry Andric!
...
llvm-svn: 113156
2010-09-06 17:52:29 +00:00
Argyrios Kyrtzidis
2fdb5b5955
LastFieldBitfield in CGObjCCommonMac::BuildAggrIvarLayout keeps bitfields or unnamed fields but later the code
...
assumes that it's always a bitfield. This can lead to a crash (reported at rdar://8368320).
llvm-svn: 113154
2010-09-06 12:00:10 +00:00
Eli Friedman
abebebf742
Update test for r113128.
...
llvm-svn: 113131
2010-09-06 00:30:50 +00:00
Chris Lattner
52bcf96384
move the hackaround for PR6537 to catch unions as well,
...
fixing the ICE in PR7151
llvm-svn: 113130
2010-09-06 00:13:11 +00:00
Eli Friedman
0b1fbd1394
PR7242: Make sure to use a different context for evaluating constant
...
initializers, so the result of the evaluation doesn't leak through
inconsistently. Also, don't evaluate references to variables with
initializers with side-effects.
llvm-svn: 113128
2010-09-06 00:10:32 +00:00
Chris Lattner
ee8df8f167
fix PR7192 by defining wchar_t in a more conventional way. The
...
type of L"x" can change based on command line arguments.
llvm-svn: 113127
2010-09-05 23:29:49 +00:00
Eli Friedman
8ed2bac65d
PR8023: Don't crash on invalid uses of __real__ on class types in C++.
...
llvm-svn: 113124
2010-09-05 23:15:52 +00:00
Chris Lattner
938cebc076
"const id<NSFoo> *" instead of "id<NSFoo> const *".
...
I think this wraps up all the legal cases.
llvm-svn: 113096
2010-09-05 00:43:21 +00:00
Chris Lattner
7f2c7f4ef3
"const std::vector<int>*" not "std::vector<int> const*"
...
llvm-svn: 113094
2010-09-05 00:27:00 +00:00
Chris Lattner
24b89469ac
'const std::type_info*' instead of 'std::type_info const*'
...
llvm-svn: 113092
2010-09-05 00:17:29 +00:00