Eli Friedman
2e2ff8894d
Hack to turn the valgrind buildbot green, until Devang can address it
...
properly.
llvm-svn: 129657
2011-04-17 06:40:15 +00:00
Chris Lattner
bc204c8043
implement rdar://9289524 - case followed immediately by break results in empty IR block,
...
a -O0 code quality issue.
llvm-svn: 129652
2011-04-17 00:54:30 +00:00
Chris Lattner
30107ed600
fold memcpy/set/move_chk to llvm.memcpy/set/move when the sizes
...
are trivial. This exposes opportunities earlier, and allows fastisel
to do good things with these at -O0.
This addresses rdar://9289468 - clang doesn't fold memset_chk at -O0
llvm-svn: 129651
2011-04-17 00:40:24 +00:00
Chris Lattner
56784f9de6
fix rdar://9289603 - clang should fold trivial ?: for enums as well as integer constants into select at -O0
...
by making the isCheapEnoughToEvaluateUnconditionally predicate handle anything that folds to a constant. In particular, we now fold enums.
llvm-svn: 129649
2011-04-16 23:15:35 +00:00
Richard Trieu
70d14f5df3
Testing my commit access. A few whitespace changes to Sema/SemaCXXCast.cpp.
...
llvm-svn: 129629
2011-04-16 01:09:30 +00:00
Argyrios Kyrtzidis
0e993c3249
Introduce Rewriter::IncreaseIndentation() which increase indentations for the lines between the given source range.
...
To determine what the indentation should be, a SourceLocation 'parentIndent' parameter is used that should be at
a source location with an indentation one degree lower than the given range.
llvm-svn: 129628
2011-04-16 01:03:33 +00:00
Tanya Lattner
5bea4c3859
Modify test for 32 and 64 bit.
...
llvm-svn: 129627
2011-04-16 01:00:29 +00:00
Devang Patel
7294d74627
Emit proper selector name in debug info.
...
llvm-svn: 129626
2011-04-16 00:37:51 +00:00
Devang Patel
9d6c857862
Emit debug info for Objective-C properties.
...
llvm-svn: 129625
2011-04-16 00:12:55 +00:00
Tanya Lattner
5ac257d738
Fix bug in vector initializer when initializing a vector with another vector.
...
Add test case.
llvm-svn: 129617
2011-04-15 22:42:59 +00:00
Fariborz Jahanian
0fe1a9861c
Enforce nonnull __attribute__ on Objective-C method calls.
...
// rdar://9287695
llvm-svn: 129615
2011-04-15 22:06:22 +00:00
Douglas Gregor
46ce91a964
Initial work to improve documentation for Clang's diagnostics, from Matthieu Monrocq
...
llvm-svn: 129614
2011-04-15 22:04:17 +00:00
Douglas Gregor
5d3d3fa33d
For the purposes of overload resolution, consider a conversion from an
...
Objective-C pointer to void* as a "conversion to void*". This allows
us to prefer an Objective-C object pointer conversion to a superclass
object pointer over an Objective-C object pointer conversion to
cv-void*. Fixes PR9735.
llvm-svn: 129603
2011-04-15 20:45:44 +00:00
Douglas Gregor
39d1a0973d
Forbid the use of C++ new/delete to allocate/free objects within an
...
address space. I could see that this functionality would be useful,
but not in its current form (where the address space is ignored):
rather, we'd want to encode the address space into the parameter list
passed to operator new/operator delete somehow, which would require a
bunch more semantic analysis.
llvm-svn: 129593
2011-04-15 19:46:20 +00:00
Douglas Gregor
a3a020ae0b
Parse GNU-style attributes prior to the type-id/new-type-id in a C++
...
"new" expression. This matches GCC's parser. Test is forthcoming.
llvm-svn: 129592
2011-04-15 19:40:02 +00:00
Nick Lewycky
12c26de5c4
Restore accidentally deleted file (I blame svn).
...
llvm-svn: 129588
2011-04-15 18:57:00 +00:00
Fariborz Jahanian
193f783a99
Fixes a crash when generating dependency file stuff
...
and output file is not writable. // rdar://9286457.
llvm-svn: 129587
2011-04-15 18:49:23 +00:00
Nick Lewycky
cc647e0937
Reapply r129561, moving the runtime/Makefile that builds compiler-rt into
...
runtime/compiler-rt/Makefile paving the way to put multiple different libraries
into runtime/ and build all of them.
llvm-svn: 129585
2011-04-15 18:33:24 +00:00
Nick Lewycky
3e7b36fb85
Doug Gregor tells me that runtime/libcxx/ is a placeholder for stuff we never
...
did. Delete it.
llvm-svn: 129584
2011-04-15 18:02:26 +00:00
Douglas Gregor
b472e93af7
Implement appropriate semantics for C++ casting and conversion when
...
dealing with address-space- and GC-qualified pointers. Previously,
these qualifiers were being treated just like cvr-qualifiers (in some
cases) or were completely ignored, leading to uneven behavior. For
example, const_cast would allow conversion between pointers to
different address spaces.
The new semantics are fairly simple: reinterpret_cast can be used to
explicitly cast between pointers to different address spaces
(including adding/removing addresss spaces), while
static_cast/dynamic_cast/const_cast do not tolerate any changes in the
address space. C-style casts can add/remove/change address spaces
through the reinterpret_cast mechanism. Other non-CVR qualifiers
(e.g., Objective-C GC qualifiers) work similarly.
As part of this change, I tweaked the "casts away constness"
diagnostic to use the term "casts away qualifiers". The term
"constness" actually comes from the C++ standard, despite the fact
that removing "volatile" also falls under that category. In Clang, we
also have restrict, address spaces, ObjC GC attributes, etc., so the
more general "qualifiers" is clearer.
llvm-svn: 129583
2011-04-15 17:59:54 +00:00
Owen Anderson
a236485b1f
Revert r129561, which broke one of the clang buildbots.
...
llvm-svn: 129581
2011-04-15 17:35:58 +00:00
Fariborz Jahanian
66a6c06dd6
Allow shadowin of 'self' in objc methods in
...
cases where stand-alone ivar can be looked up
in shadowed object. To fix gcc compatibility
breakage. // rdar://9284603
llvm-svn: 129576
2011-04-15 17:04:42 +00:00
Richard Smith
9bc6eedab4
Add __has_feature(cxx_range_for) check for C++11 range-based for loop.
...
llvm-svn: 129573
2011-04-15 15:14:40 +00:00
Michael J. Spencer
1737c9e0b5
Add mm3dnow.h.
...
llvm-svn: 129572
2011-04-15 15:11:21 +00:00
Michael J. Spencer
6826eb816a
Add 3DNow! Intrinsics.
...
llvm-svn: 129570
2011-04-15 15:07:13 +00:00
Richard Smith
6c42433ceb
Update www: clang now supports C++11 for-range and non-template type aliases.
...
llvm-svn: 129569
2011-04-15 14:38:27 +00:00
Richard Smith
dda56e4b4a
Support for C++11 (non-template) alias declarations.
...
llvm-svn: 129567
2011-04-15 14:24:37 +00:00
Richard Smith
030f499d2f
Teach -ast-print how to print template template parameters.
...
llvm-svn: 129565
2011-04-15 13:38:57 +00:00
Benjamin Kramer
3462376c65
Fix mismatched delete.
...
llvm-svn: 129564
2011-04-15 11:21:57 +00:00
Richard Smith
3504faf6e4
Apply NAKAMURA Takumi's workaround to fix thses tests on -Asserts build. The labels there are numbered, not named, and numbered labels are formatted differently.
...
llvm-svn: 129562
2011-04-15 10:12:39 +00:00
Nick Lewycky
53ba5ee4ce
Create a compiler-rt directory and move the Makefile to it. Add a makefile that
...
builds the subdirs from this directory. This makes the behaviour with make match
what already happens with cmake.
llvm-svn: 129561
2011-04-15 06:57:32 +00:00
Ted Kremenek
1551d55295
Improve diagnostics on GNU attributes by warning about attributes that should have no arguments or parameters. Patch by Michael Han!
...
llvm-svn: 129560
2011-04-15 05:49:29 +00:00
Chris Lattner
57540c5be0
fix a bunch of comment typos found by codespell. Patch by
...
Luis Felipe Strano Moraes!
llvm-svn: 129559
2011-04-15 05:22:18 +00:00
Peter Collingbourne
3d9cbdc3e6
C1X: implement static asserts
...
llvm-svn: 129555
2011-04-15 00:35:57 +00:00
Peter Collingbourne
9114759641
C1X: implement generic selections
...
As an extension, generic selection support has been added for all
supported languages. The syntax is the same as for C1X.
llvm-svn: 129554
2011-04-15 00:35:48 +00:00
Peter Collingbourne
a686b5f8bf
C1X: add a language standard
...
llvm-svn: 129553
2011-04-15 00:35:23 +00:00
Tanya Lattner
ee840b85b1
Do not expand the opencl pragma names. This is so you can also have a define named the samed as the pragma and they do not interfere (ie. cl_khr_fp64).
...
llvm-svn: 129549
2011-04-14 23:35:31 +00:00
Douglas Gregor
6ca6410e3a
If the declaration of a C++ member function with an inline definition
...
is so broken that Sema can't form a declaration for it, don't bother
trying to parse the definition later. Fixes <rdar://problem/9221993>.
llvm-svn: 129547
2011-04-14 23:19:27 +00:00
Douglas Gregor
40965fa78a
When we transform a C++ exception declaration (e.g., for template
...
instantiation), be sure to add the transformed declaration into the
current DeclContext. Also, remove the -Wuninitialized hack that works
around this bug. Fixes <rdar://problem/9200676>.
llvm-svn: 129544
2011-04-14 22:32:28 +00:00
Richard Smith
02e85f3bc5
Add support for C++0x's range-based for loops, as specified by the C++11 draft standard (N3291).
...
llvm-svn: 129541
2011-04-14 22:09:26 +00:00
Richard Smith
55858499e2
Detect when the string "<::" is found in code after a cast or template name and is interpreted as "[:" because of the digraph "<:". When found, give an error with a fix-it to add whitespace between the "<" and "::".
...
Patch by Richard Trieu! Plus a small tweak from me to deal with one of the tokens coming from a macro.
llvm-svn: 129540
2011-04-14 21:45:45 +00:00
Douglas Gregor
7df2126000
Harden Clang's cursor visitation logic against NULL declaration,
...
statement, and expression pointers. While these shouldn't happen, it's
better to be safe in libclang.
llvm-svn: 129539
2011-04-14 21:41:34 +00:00
Fariborz Jahanian
bc2ee9382c
Match pointer of compatible vection types.
...
// rdar://9208404
llvm-svn: 129536
2011-04-14 20:33:36 +00:00
Douglas Gregor
af670a81e9
When determining the "usage" type of a declaration for the purposes of code
...
completion, look through block pointer and function pointer types to the
result type of the block/function. Fixes <rdar://problem/9282583>.
llvm-svn: 129535
2011-04-14 20:33:34 +00:00
Anton Korobeynikov
231e875b5c
Implement ARM pcs attribute. Basically it's another way of calling convention selection (AAPCS or
...
AAPCS+VFP), similar to fastcall / stdcall / whatevercall seen on x86.
In particular, all library functions should always be AAPCS regardless of floating point ABI used.
llvm-svn: 129534
2011-04-14 20:06:49 +00:00
Richard Smith
fdc33cbecd
Name mangling of late-specified return types doesn't work if the return type references the argument types:
...
template<typename T> auto f(T a) -> decltype(a.foo());
Since this is the primary reason for the introduction of this feature, downgrade implementation status to "Some examples work".
llvm-svn: 129533
2011-04-14 19:57:19 +00:00
Richard Smith
f7b6202e6c
Implement C++0x [lex.pptoken]p3's handling of <::.
...
llvm-svn: 129525
2011-04-14 18:36:27 +00:00
Douglas Gregor
23c8476748
Parse an '@' in an Objective-C++ class member specification,
...
diagnosing it as an error rather than looping infinitely. Also,
explicitly disallow @defs in Objective-C++. Fixes <rdar://problem/9260136>.
llvm-svn: 129521
2011-04-14 17:21:19 +00:00
Sebastian Redl
9ab988fe00
Chained PCH: Remember when additional specializations are added to a function template from a previous PCH. Fixes the only crasher when using massive chains on Clang's Sema component. We still have some incomplete codegen there.
...
llvm-svn: 129516
2011-04-14 14:07:59 +00:00
Sebastian Redl
05d73a10a2
Add header guards to include/clang/Basic/ConvertUTF.h.
...
llvm-svn: 129515
2011-04-14 14:07:49 +00:00
Sebastian Redl
4e52123d06
Fix -H. It was pretty broken.
...
llvm-svn: 129514
2011-04-14 14:07:45 +00:00
Sebastian Redl
eb931c6b0e
The ASTReader created by -chain-include used the generated PCH buffers in the wrong order. The effect was that all but the first chain-include files was ignored for subsequent compilations.
...
llvm-svn: 129513
2011-04-14 14:07:41 +00:00
Ted Kremenek
9eb0b7d2f1
Return the correct lastly populated block from CFGBuilder::VisitUnaryExprOrTypeTraitExpr().
...
llvm-svn: 129499
2011-04-14 01:50:50 +00:00
Ken Dyck
3563aa6520
Replace a couple of divide-by-8s with divide-by-charwidths. No change in
...
functionality intended.
llvm-svn: 129496
2011-04-14 01:00:39 +00:00
Eli Friedman
6620ddeaa4
Re-fix r129481 and r129465 properly. Nulls fixits shouldn't be dropped in
...
DiagnosticBuilder::AddFixItHint: they will be dropped along with any
other (possibly valid) fixits later.
llvm-svn: 129495
2011-04-14 00:51:41 +00:00
Argyrios Kyrtzidis
36e4ae3e57
When creating an implicit member expression through a qualified-id, check that the class
...
named by the nested-name-specifier is same or base of the class in which the member expression appears.
It seems we also had an ill-formed test case, mon dieu! Fixes rdar://8576107.
llvm-svn: 129493
2011-04-14 00:46:47 +00:00
Ken Dyck
c5ca87675e
Replace a couple of divisions-by-'8' with divisions-by-charwidth. No change
...
in functionality intended.
llvm-svn: 129491
2011-04-14 00:43:09 +00:00
Anders Carlsson
d162fb83f2
In C++, when initializing an array from a pascal string, it's OK if the array
...
is 1 element smaller than the string, because we can just strip off the last
null character. This matches GCC.
llvm-svn: 129490
2011-04-14 00:41:11 +00:00
Anders Carlsson
752454092c
Add a flag to StringLiteral to keep track of whether the string is a pascal string or not.
...
llvm-svn: 129488
2011-04-14 00:40:03 +00:00
Anders Carlsson
a5a9bafeb9
Rename test.
...
llvm-svn: 129486
2011-04-13 23:55:47 +00:00
Chandler Carruth
a7773f719e
Add -no-canonical-prefixes to tests which assert on the name of the
...
built clang binary that is used by the test. Build systems that use
symlinks for build outputs will fail these assertions otherwise.
llvm-svn: 129482
2011-04-13 22:28:36 +00:00
Fariborz Jahanian
38675543c5
Issue the 2nd fixit even if fix-it hint is supressed.
...
// rdar://9091893
llvm-svn: 129481
2011-04-13 22:18:37 +00:00
Ted Kremenek
13b5a2c2f8
Add Objective-C++ files to those accepted by ccc-analyzer.
...
llvm-svn: 129475
2011-04-13 21:52:05 +00:00
Ted Kremenek
7114954232
Update public analyzer build to checker-256.
...
llvm-svn: 129473
2011-04-13 21:48:34 +00:00
Fariborz Jahanian
e72509c10c
No fixit hint for builtin expressions which are
...
defined in a macro. // rdar://9091893
llvm-svn: 129465
2011-04-13 20:31:26 +00:00
Bill Wendling
a865185ad6
Removing the unaligned load tests from builtins-x86.c since they're generated by a regular 'load' now.
...
llvm-svn: 129464
2011-04-13 20:17:22 +00:00
Axel Naumann
43dec14079
From Vassil Vassilev: Give external source's last resort lookup a chance, even if an identifier could resolve to a builtin.
...
llvm-svn: 129438
2011-04-13 13:19:46 +00:00
Bill Wendling
2c1c33552d
Remove comment that snuck in there.
...
llvm-svn: 129434
2011-04-13 10:05:14 +00:00
Bill Wendling
88ae43772a
It looks like the FreeBSD buildbot needs this for the builtins-x86.c test.
...
llvm-svn: 129433
2011-04-13 10:02:54 +00:00
Chandler Carruth
0a7aa3b60b
Teach -Wuninitialized about C++'s typeid expression, including both the
...
evaluated and unevaluated contexts. Add some testing of sizeof and
typeid.
Both of the typeid tests added here were triggering warnings previously.
Now the one false positive is suppressed without suppressing the warning
on actually buggy code.
llvm-svn: 129431
2011-04-13 08:18:42 +00:00
Argyrios Kyrtzidis
71c58f3d59
Collect the options applicable to the Rewriter methods into a RewriterOptions struct.
...
llvm-svn: 129430
2011-04-13 07:15:11 +00:00
Bill Wendling
b9c9e34cb3
Just use a native "load" instead of translating the builtin later. Clang can
...
take it!
I wasn't able to get __builtin_ia32_loaddqu to transform into an unaligned
load...I'll have to look into it further.
llvm-svn: 129427
2011-04-13 05:58:17 +00:00
Francois Pichet
efc283c076
Still not used to put the * next to the variable name.
...
llvm-svn: 129426
2011-04-13 02:44:57 +00:00
Francois Pichet
48c946e5ef
In Microsoft mode, within class scope, if a CXXScopeSpec's type is equal to the type of one of the base classes then downgrade the missing typename error to a warning. Up to now this is the only case I found where MSVC doesn't require "typename" at class scope. Really strange!
...
This fixes 1 error when parsing the MSVC 2008 header files.
Example:
template<class T> class A {
public:
typedef int TYPE;
};
template<class T> class B : public A<T> {
public:
A<T>::TYPE a; // no typename required because A<T> is a base class.
};
llvm-svn: 129425
2011-04-13 02:38:49 +00:00
Anders Carlsson
bbe277c4a9
Use EmitCallOrInvoke in EmitBadTypeidCall and EmitBadCastCall.
...
llvm-svn: 129424
2011-04-13 02:35:36 +00:00
Bill Wendling
3137d3cb49
Convert the unaligned load builtins to the first-class versions.
...
llvm-svn: 129420
2011-04-13 00:36:37 +00:00
Daniel Dunbar
dc8355e81a
Driver/no-integrated-as: Fix forwarding of -g flag to assembler, when .s input
...
undergoes preprocessing.
llvm-svn: 129414
2011-04-12 23:59:20 +00:00
Fariborz Jahanian
82bc436c28
Redeclaration of 'self' should be flagged in
...
objective-c instead of crashing in IRgen.
// rdar://9154582.
llvm-svn: 129412
2011-04-12 23:39:33 +00:00
Daniel Dunbar
9c8cd4c097
IRgen/Obj-C: Emit CFStrings and NSStrings with the alignment of the char type,
...
there is no reason to align them higher.
- This roughly matches llvm-gcc's r126913.
- It is an open question whether or not we should do this for cstring's in
general (code size vs optimization potential), for now we just match llvm-gcc
until someone wants to run some experiments.
llvm-svn: 129410
2011-04-12 23:30:52 +00:00
John McCall
58989b7125
We can't emit an aggregate cast as its sub-expression in general just
...
because the result is ignored. The particular example here is with
property l-values, but there could be all sorts of lovely casts that this
isn't safe for. Sink the check into the one case that seems to actually
be capable of honoring this.
llvm-svn: 129397
2011-04-12 22:02:02 +00:00
Daniel Dunbar
a4e29a64d8
Driver: Don't treat -m{abi,arch,cpu,cmodel}= as "driver" options, they don't
...
modify the driver planning.
llvm-svn: 129396
2011-04-12 21:53:33 +00:00
Ted Kremenek
ced5feaec9
Teach VariadicMethodTypeChecker to not crash when processing methods declared in protocols.
...
llvm-svn: 129395
2011-04-12 21:47:05 +00:00
Ted Kremenek
905a602e0c
Fix another IdempotentOperationsChecker corner case when determining if an active block on the worklist
...
impacts the results of the check.
llvm-svn: 129394
2011-04-12 21:47:02 +00:00
Ted Kremenek
f62a279e4c
Provide options to explicitly enable/disable checkers in scan-build.
...
llvm-svn: 129393
2011-04-12 21:47:00 +00:00
Ted Kremenek
79c4c2baa9
Enable C++ static analysis support in ccc-analyzer.
...
llvm-svn: 129392
2011-04-12 21:46:57 +00:00
Ted Kremenek
8a4c760c20
ArrayBoundCheckerV2: don't arbitrarily warn about indexing before the 0-index of a symbolic region. In many cases that isn't really the base offset.
...
llvm-svn: 129366
2011-04-12 17:21:33 +00:00
Lenny Maiorani
f3539ad5c7
This patch adds modeling of strcmp() to the CString checker. Validates inputs are not NULL and are real C strings, then does the comparison and binds the proper return value. Unit tests included.
...
llvm-svn: 129364
2011-04-12 17:08:43 +00:00
Fariborz Jahanian
240400b746
Fix a regression where the initializer implements
...
the initialized's protocol and yet clang warns.
objective-c issue, // rdar://9267196
llvm-svn: 129363
2011-04-12 16:34:14 +00:00
Richard Smith
0f538460d2
Fix AST serialization of reference-to-reference types. This previously caused
...
a crash when deserializing the AST for this:
typedef char (&R);
extern R &r;
llvm-svn: 129358
2011-04-12 10:38:03 +00:00
Ted Kremenek
f52718899f
static analyzer: invalidate by-ref arguments passed to constructors in a 'new' expression.
...
llvm-svn: 129349
2011-04-12 05:12:39 +00:00
Ted Kremenek
57a4a152b2
Fix bug in SimpleSValBuilder where '--' pointer arithmetic was treated like '++' pointer arithmetic.
...
llvm-svn: 129348
2011-04-12 03:49:37 +00:00
Douglas Gregor
c05f657d83
Don't suggest dynamic_cast or typeid as code completion results when
...
RTTI is disabled. Similarly, don't suggest throw or try as code
completion results when C++ exceptions are disabled. Fixes
<rdar://problem/9193560>.
llvm-svn: 129346
2011-04-12 02:47:21 +00:00
John McCall
a97f329869
Template static data members can have weak_odr linkage, not just
...
weak linkage. Also, fix a problem where global weak variables
with non-trivial initializers were getting guard variables, or at
least were checking for them and then crashing.
llvm-svn: 129342
2011-04-12 01:46:54 +00:00
John McCall
b4744a3f4d
Whoops.
...
llvm-svn: 129341
2011-04-12 01:15:45 +00:00
Douglas Gregor
8e93666a71
Objective-C++: The global namespace is an associated namespace of an
...
Objective-C pointer type. Fixes <rdar://problem/9142559>.
llvm-svn: 129339
2011-04-12 01:02:45 +00:00
John McCall
32f44bd0fc
Ignore indirect field declarations. Fixes PR9570.
...
llvm-svn: 129337
2011-04-12 01:01:22 +00:00
John McCall
f31fac4712
Formatting.
...
llvm-svn: 129336
2011-04-12 00:59:32 +00:00
John McCall
9fcede85dd
This test works now; enable it.
...
llvm-svn: 129335
2011-04-12 00:57:12 +00:00
Ted Kremenek
4f939da02d
RegionStoreManager::invalidateRegions: treat classes the same as structs.
...
llvm-svn: 129333
2011-04-12 00:44:31 +00:00
John McCall
2979fe01da
After some discussion with Doug, we decided that it made a lot more sense
...
for __unknown_anytype resolution to destructively modify the AST. So that's
what it does now, which significantly simplifies some of the implementation.
Normal member calls work pretty cleanly now, and I added support for
propagating unknown-ness through &.
llvm-svn: 129331
2011-04-12 00:42:48 +00:00
Ted Kremenek
e0d2b8c58c
Teach GRState::getSValAsScalarOrLoc() about C++ references.
...
llvm-svn: 129329
2011-04-12 00:28:12 +00:00
Ted Kremenek
8ef59e5c03
C++ static analysis: also invalidate fields of objects that are the callees in C++ method calls.
...
llvm-svn: 129308
2011-04-11 22:22:05 +00:00
Fariborz Jahanian
1248df43bf
Typo.
...
llvm-svn: 129301
2011-04-11 21:26:35 +00:00
Fariborz Jahanian
fae2e8df37
Fixup more objc rwriter bug having to do with
...
rewriting of blocks which have objective-c
stuff which need be rewritten as well. // rdar://9254348
llvm-svn: 129300
2011-04-11 21:17:02 +00:00
Chris Lattner
20b90d061a
fix the path to ld.so for darwin/ppc, resolving PR9677. Patch
...
by Jeremy Huddleston!
llvm-svn: 129299
2011-04-11 21:15:37 +00:00
Anders Carlsson
0c63350b0b
If there's an invoke destination, we should use invoke instead of call when calling the __cxa_bad_typeid function. Fixes PR7400.
...
llvm-svn: 129273
2011-04-11 14:13:40 +00:00
John McCall
2d2e870745
More __unknown_anytype work.
...
llvm-svn: 129269
2011-04-11 07:02:50 +00:00
Anders Carlsson
8a01a751c9
Remove CK_DynamicToNull.
...
llvm-svn: 129265
2011-04-11 02:03:26 +00:00
Anders Carlsson
c1c9971cab
When we know that a dynamic_cast always returns null, we can make
...
CodeGenFunction::EmitDynamicCast always return null or throw a bad_cast
exception.
llvm-svn: 129264
2011-04-11 01:45:29 +00:00
Anders Carlsson
267c0c930e
Add CXXDynamicCastExpr::isAlwaysNull() which will be replacing the cast kind I added.
...
llvm-svn: 129263
2011-04-11 01:43:55 +00:00
Anders Carlsson
882d790f72
Clean up CodeGenFunction::EmitDynamicCast. No functionality change.
...
llvm-svn: 129262
2011-04-11 00:46:40 +00:00
Anders Carlsson
98981b10c8
Replace a couple of Builder.CreateICmpEQ with Builder.CreateIsNull. No functionality change.
...
llvm-svn: 129261
2011-04-11 00:30:07 +00:00
Eli Friedman
554eba9c08
PR9669: implement correct checking for [dcl.init.string]p2.
...
llvm-svn: 129260
2011-04-11 00:23:45 +00:00
Anders Carlsson
50ddb5cc0a
Remove the CodeGenCXX/dyncast.cpp test; it isn't really super useful to match on huge chunks of LLVM output.
...
llvm-svn: 129258
2011-04-10 23:15:15 +00:00
Anders Carlsson
c602006638
As a first step towards fixing PR9641, add a CK_DynamicToNull cast kind which
...
represents a dynamic cast where we know that the result is always null.
For example:
struct A {
virtual ~A();
};
struct B final : A { };
struct C { };
bool f(B* b) {
return dynamic_cast<C*>(b);
}
llvm-svn: 129256
2011-04-10 20:33:22 +00:00
John McCall
3aef3d8713
Simplify calling CheckPlaceholderExpr, converge on it in a few places,
...
and move a vector-splat check to follow l-value conversion.
llvm-svn: 129254
2011-04-10 19:13:55 +00:00
Anders Carlsson
c53d9e8350
Strip off parens and no-op casts when deciding if an expr can be devirtualized. Fixes the second half of PR9660.
...
llvm-svn: 129253
2011-04-10 18:20:53 +00:00
Anders Carlsson
e5ec21c977
Change CollectPrimaryBases to collect the bases in the right order. Fixes one half of PR9660.
...
llvm-svn: 129252
2011-04-10 18:00:32 +00:00
Anders Carlsson
68aad14dd3
Make -fdump-vtable-layouts also dump vtable indices for all virtual member functions in the class.
...
llvm-svn: 129250
2011-04-10 17:42:45 +00:00
Oscar Fuentes
643f1868de
Reflect rename on LLVM cmake file.
...
llvm-svn: 129246
2011-04-10 16:17:31 +00:00
Chandler Carruth
016ef400c4
Enhance the diagnostic for literal float -> int conversions to suggest
...
rewriting the literal when the value is integral. It is not uncommon to
see code written as:
const int kBigNumber = 42e5;
Without any real awareness that this is no longer an ICE. The note helps
automate and ease the process of fixing code that violates the warning.
llvm-svn: 129243
2011-04-10 08:36:24 +00:00
Francois Pichet
8cb243a78f
Refactor 129240 to merge the old default argument into the new parameter.
...
llvm-svn: 129242
2011-04-10 04:58:30 +00:00
Eli Friedman
493c34a86c
PR9580: Handle vectors correctly in ScalarExprEmitter::EmitRem.
...
While I'm here, FileCheck-ize the ext-vector test, so we actually check
what it is generating.
llvm-svn: 129241
2011-04-10 04:44:11 +00:00
Francois Pichet
53fe2bb29e
MSVC accepts that default parameters be redefined for member functions
...
of template class. The new value is ignored.
This fixes 1 error when parsing MSVC 2010 header files with clang.
llvm-svn: 129240
2011-04-10 03:03:52 +00:00
Oscar Fuentes
87eb515aba
libclang output name is now libclang. This solves a name collision
...
when building with Visual Studio. `clang.dll' and `clang.exe' would
have the same `clang.ilk' and `clang.pdb'. On a serial build those
files would be overwritten as clang.exe/clang.dll are created. On a
parallel build there is a risk of both files being written at the same
time. On that case VS fails.
llvm-svn: 129239
2011-04-10 02:29:27 +00:00
John McCall
39439739cf
Fix a bunch of major problems with __unknown_anytype and properly test
...
for them. The only major missing feature is references.
llvm-svn: 129234
2011-04-09 22:50:59 +00:00
Eli Friedman
db42a3e876
Make sure we or together the overflow flags of the multiply and add, so the
...
check is triggered appropriately. Reported on cfe-dev.
llvm-svn: 129231
2011-04-09 19:54:33 +00:00
Lenny Maiorani
467dbd5f13
strcat() and strncat() model additions to CStringChecker.
...
Validates inputs are not NULL, checks for overlapping strings, concatenates the strings checking for buffer overflow, sets the length of the destination string to the sum of the s1 length and the s2 length, binds the return value to the s1 value.
llvm-svn: 129215
2011-04-09 15:12:58 +00:00
Dylan Noblesmith
92c07c27be
refactor flags for TokenKinds.def
...
Make KEYALL a combination of all other flags instead
of its own separate flag. Also rewrite the enum
definitions in hex instead of decimal.
llvm-svn: 129213
2011-04-09 13:34:05 +00:00
Dylan Noblesmith
70e73a3d60
refactor -ccc-gcc-name code
...
Put the logic for deciding the default name for gcc/g++
in the only place that actually cares about it.
This also pushes an ifdef out of the generic driver code
to a little further down, when the target is actually known.
Hopefully it can be changed into just a runtime check
in the future.
llvm-svn: 129212
2011-04-09 13:31:59 +00:00
Eli Friedman
c5b20b5283
PR8369: make __attribute((regparm(0))) work correctly. Original patch by
...
pageexec@freemail.hu , tweaks by me.
llvm-svn: 129206
2011-04-09 08:18:08 +00:00
Chandler Carruth
66a7b04767
Clean up the bool conversion warning. Group it with other conversion
...
warnings, and make its text appropriate for constant bool expressions
other than 'false'. This should finish off PR9612.
llvm-svn: 129205
2011-04-09 07:48:17 +00:00
Chandler Carruth
ffab873ed5
Add support for warning on general null pointer expressions of boolean
...
type rather than just the literal 'false'. This begins fixing PR9612,
but the message is now wrong. WIP, the cleanup of the messaging is next.
llvm-svn: 129204
2011-04-09 07:32:05 +00:00
Chris Lattner
e4ec5abf1b
fix indentation
...
llvm-svn: 129202
2011-04-09 07:11:53 +00:00
Chris Lattner
5045cf1a61
accept -x objc-cpp-output as an alias for -x objective-c-cpp-output,
...
per PR9577
llvm-svn: 129201
2011-04-09 07:09:31 +00:00
Chris Lattner
9cb59fa834
add a __sync_swap builtin to fill out the rest of the __sync builtins.
...
Patch by Dave Zarzycki!
llvm-svn: 129189
2011-04-09 03:57:26 +00:00
Ken Dyck
df01628e08
Convert the PointerWidthInBytes variable in EmitMemberPointer() to CharUnits
...
to eliminate a divide-by-8. No change in functionality intended.
llvm-svn: 129180
2011-04-09 01:30:02 +00:00
Ken Dyck
499e93d7ee
Eliminate a divide-by-8 in BuildVMIClassTypeInfo() by using CharUnits for
...
the base offset. No change in functionality intended.
llvm-svn: 129179
2011-04-09 01:09:56 +00:00
Eric Christopher
6417e35568
Remove a pair of unused diagnostic messages.
...
llvm-svn: 129178
2011-04-09 00:53:03 +00:00
Nick Lewycky
d85ae78c48
Apply explicit braces to avoid ambiguous 'else' [-Wparentheses]
...
llvm-svn: 129176
2011-04-09 00:25:15 +00:00
Eric Christopher
7f36a79ee9
Eat the UTF-8 BOM at the beginning of a file since it's ignored anyhow.
...
Nom Nom Nom.
Patch by Anton Korobeynikov!
llvm-svn: 129174
2011-04-09 00:01:04 +00:00
Chris Lattner
143ed0fc72
complete documentation of flags, patch by nobled
...
llvm-svn: 129173
2011-04-08 23:54:05 +00:00
Fariborz Jahanian
eae9c0e3df
Fixes a rewrting bug of a property-dot syntax expression inside
...
a block. First part of // rdar://9254348
llvm-svn: 129171
2011-04-08 23:48:29 +00:00
Argyrios Kyrtzidis
5ae6b64e7f
Properly traverse a ObjCMethodDecl in RecursiveASTVisitor.
...
llvm-svn: 129169
2011-04-08 23:35:25 +00:00
Chris Lattner
e094ee0a34
typo fix + expand
...
llvm-svn: 129167
2011-04-08 22:58:43 +00:00
Ted Kremenek
f603f3afbd
Start overhauling static analyzer support for C++ constructors. The inlining support isn't complete, and needs
...
to be reworked to model CallEnter/CallExit (just like all other calls). For now, treat constructors mostly
like other function calls, making the analysis of C++ code just a little more useful.
llvm-svn: 129166
2011-04-08 22:42:35 +00:00
Evan Cheng
298de937e7
Minor format fix.
...
llvm-svn: 129164
2011-04-08 22:34:21 +00:00
Evan Cheng
fbbacc9241
Document -ftrap-function= option
...
llvm-svn: 129162
2011-04-08 22:18:01 +00:00
Devang Patel
0b37e79891
Do not use zero as an upper bound for unbounded array because upper bound zero also indicates one element array.
...
llvm-svn: 129157
2011-04-08 21:56:52 +00:00
Evan Cheng
04c9429f34
Rename -mtrap_function= to -ftrap_function= since it's now a target neutral options.
...
llvm-svn: 129153
2011-04-08 21:37:45 +00:00
Evan Cheng
77cdce9458
Add -mtrap_function=<> option. rdar://9257465
...
llvm-svn: 129145
2011-04-08 18:47:41 +00:00
John Wiegley
0129629fd3
Use ExprResult& instead of Expr *& in Sema
...
This patch authored by Eric Niebler.
Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr
pointers as in/out parameters (Expr *&). This is especially true for the
routines that apply implicit conversions to nodes in-place. This design is
workable only as long as those conversions cannot fail. If they are allowed
to fail, they need a way to report their failures. The typical way of doing
this in clang is to use an ExprResult, which has an extra bit to signal a
valid/invalid state. Returning ExprResult is de riguour elsewhere in the Sema
interface. We suggest changing the Expr *& parameters in the Sema interface
to ExprResult &. This increases interface consistency and maintainability.
This interface change is important for work supporting MS-style C++
properties. For reasons explained here
<http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html >,
seemingly trivial operations like rvalue/lvalue conversions that formerly
could not fail now can. (The reason is that given the semantics of the
feature, getter/setter method lookup cannot happen until the point of use, at
which point it may be found that the method does not exist, or it may have the
wrong type, or overload resolution may fail, or it may be inaccessible.)
llvm-svn: 129143
2011-04-08 18:41:53 +00:00
Fariborz Jahanian
4806ff8af9
Warn for any kind of initialization if initializer does not
...
implement lhs's protocols. // rdar://9091389.
llvm-svn: 129142
2011-04-08 18:25:29 +00:00
Chris Lattner
9242b33de7
fix a typo, patch by PaX team.
...
llvm-svn: 129141
2011-04-08 18:06:54 +00:00
Chandler Carruth
42983aef34
Switch 'is possibly uninitialized' to 'may be uninitialized' based on
...
Chris's feedback.
llvm-svn: 129127
2011-04-08 06:47:15 +00:00
Chandler Carruth
278f89732f
Now that the analyzer is distinguishing between uninitialized uses that
...
definitely have a path leading to them, and possibly have a path leading
to them; reflect that distinction in the warning text emitted.
llvm-svn: 129126
2011-04-08 06:33:38 +00:00
Daniel Dunbar
f28c2ffb84
Driver: Don't attempt to forward some Clang-only options to cc1.
...
llvm-svn: 129108
2011-04-07 20:41:03 +00:00
Daniel Dunbar
44d9ef78ca
Frontend/CC_LOG_DIAGNOSTICS: Fix thinko and open diag log in append mode.
...
llvm-svn: 129103
2011-04-07 20:19:21 +00:00
Ted Kremenek
97c393807b
Teach -Wuninitialized to not warn about variables declared in C++ catch statements.
...
llvm-svn: 129102
2011-04-07 20:02:56 +00:00
Daniel Dunbar
2f8d10e8d7
Fronted/CC_LOG_DIAGNOSTICS: Add test case.
...
llvm-svn: 129097
2011-04-07 19:05:06 +00:00
Daniel Dunbar
7b83306d20
Fronted/CC_LOG_DIAGNOSTICS: Wire up dwarf-debug-flags support.
...
llvm-svn: 129095
2011-04-07 18:59:02 +00:00
Daniel Dunbar
c032503274
Fronted/CC_LOG_DIAGNOSTICS: Output main file name, and add support for
...
outputting dwarf-debug-flags.
llvm-svn: 129094
2011-04-07 18:51:54 +00:00
Daniel Dunbar
719393a56b
Fronted/CC_LOG_DIAGNOSTICS: Tweak output form to be plist chunks, and don't
...
output missing data.
llvm-svn: 129093
2011-04-07 18:44:15 +00:00
Daniel Dunbar
4f3a28b387
Frontend: Continue flushing out LogDiagnosticPrinter.
...
llvm-svn: 129091
2011-04-07 18:37:34 +00:00
Daniel Dunbar
2083c32f7a
Frontend: Sketch a LogDiagnosticPrinter object, and wire CC_LOG_DIAGNOSTICS to
...
it.
llvm-svn: 129089
2011-04-07 18:31:10 +00:00
Daniel Dunbar
4efbb07527
ChainedDiagnosticClient: Fix a bug where chained diagnostic clients wouldn't
...
accurately track warning/error counts.
llvm-svn: 129088
2011-04-07 18:24:12 +00:00
Daniel Dunbar
6b58486466
Frontend: Sketch support for -diagnostic-log-file, which still doesn't do anything.
...
llvm-svn: 129086
2011-04-07 18:11:14 +00:00
Argyrios Kyrtzidis
2f8165b685
Enhance the Rewriter.
...
-Allow removing a line completely if it ends up empty
-Provide more control on what should be removed.
llvm-svn: 129085
2011-04-07 18:10:12 +00:00
Argyrios Kyrtzidis
3fd80c1f1a
Add FullSourceLoc::BeforeThanCompare. a comparison function class, useful for sorting FullSourceLocs.
...
llvm-svn: 129084
2011-04-07 18:10:07 +00:00
Daniel Dunbar
529c03bc1e
Driver: Sketch driver support for a CC_LOG_DIAGNOSTICS options, similar to the
...
existing CC_PRINT_OPTIONS and CC_PRINT_HEADERS, which can be used to
transparently capture the compiler diagnostics from a build.
llvm-svn: 129082
2011-04-07 18:01:20 +00:00
Ken Dyck
bb4e977218
[Reapply r128776, modified so that it does not break debug info.]
...
Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to
CharUnits. No change in functionality intended.
llvm-svn: 129072
2011-04-07 12:37:09 +00:00
Abramo Bagnara
7ccce98861
In C++ the argument of logical not should always be bool. Added missing implicit cast for scalars.
...
llvm-svn: 129066
2011-04-07 09:26:19 +00:00
John McCall
319963434c
Basic, untested implementation for an "unknown any" type requested by LLDB.
...
The idea is that you can create a VarDecl with an unknown type, or a
FunctionDecl with an unknown return type, and it will still be valid to
access that object as long as you explicitly cast it at every use. I'm
still going back and forth about how I want to test this effectively, but
I wanted to go ahead and provide a skeletal implementation for the LLDB
folks' benefit and because it also improves some diagnostic goodness for
placeholder expressions.
llvm-svn: 129065
2011-04-07 08:22:57 +00:00
Ken Dyck
3a09bc5ab0
[Reapply r128773. This is not the source of the issues Devang was seeing
...
with debug info.]
Use CharUnits for the offsets in the VirtualBaseClassOffsetOffsetsMapTy. No
change in functionality intended.
llvm-svn: 129048
2011-04-07 01:22:42 +00:00
Ken Dyck
25c82240e9
[Reapply r128771. It wasn't the source of the issues Devang saw with debug
...
info.]
Use CharUnits for the offset type in the ClassNamesAndOffsets map in
dumpLayout(). No change in functionality intended.
llvm-svn: 129046
2011-04-07 00:59:42 +00:00
Ken Dyck
42a9d29c2c
Reapply r128770. It's not the cause of the issues Devang saw with debug info.
...
Use CharUnits for the offsets in the VBaseOffsetOffsetsMapTy types. No
change in functionality intended.
llvm-svn: 129043
2011-04-07 00:55:01 +00:00
John McCall
26d365e149
I can't figure out any reasonable way to make this test non-host-dependent,
...
so I'm killing it.
llvm-svn: 129026
2011-04-06 20:46:42 +00:00
Anders Carlsson
6b06e18c70
Wide Pascal strings should be of type wchar_t[] and not unsigned char[].
...
llvm-svn: 129017
2011-04-06 18:42:48 +00:00
Fariborz Jahanian
3b9819b4a2
Fix lookup for class messages sent to qualified-class
...
types such that protocols are seached first. Fixes
// rdar://9224670
llvm-svn: 129016
2011-04-06 18:40:08 +00:00
Eric Christopher
534b6a01e8
Add support for Fedora16, gcc 4.6.0 and Fedora Rawhide.
...
Patch by Bobby Powers
llvm-svn: 129014
2011-04-06 18:22:53 +00:00
John Thompson
9bfba16a66
Added link to LLVM cmake page in Visual Studio section.
...
llvm-svn: 129013
2011-04-06 18:22:12 +00:00
Fariborz Jahanian
5de5313abe
Refine rules for atomic property api to
...
pass a previously failing clang test.
// rdar://8808439
llvm-svn: 129004
2011-04-06 16:05:26 +00:00
Peter Collingbourne
ba3e6667cc
Do not use IR marker for LLVM intrinsics
...
llvm-svn: 129001
2011-04-06 12:29:09 +00:00
Peter Collingbourne
eafa4e4b5b
If this is an intrinsic function, set the function's attributes to the intrinsic's attributes.
...
llvm-svn: 129000
2011-04-06 12:29:04 +00:00
John McCall
3337ca5f95
When updating the retain summary based on {cf,ns}_consumed attributes,
...
be sure to consume the argument index that actually had the attribute
rather than always the first. rdar://problem/9234108
llvm-svn: 128998
2011-04-06 09:02:12 +00:00
John McCall
b1915d62a7
Make this a -cc1 test with a triple and a target feature.
...
llvm-svn: 128993
2011-04-06 06:48:04 +00:00
John McCall
3cacdf5dbb
Anonymify this test.
...
llvm-svn: 128987
2011-04-06 04:29:52 +00:00
John McCall
91a528841b
Implement the AVX cmp builtins as macros instead of static inlines.
...
Patch by Syoyo Fujita! Reviewed by Chris Lattner! Checked in by me!
llvm-svn: 128984
2011-04-06 03:37:51 +00:00
John McCall
c5e6b97523
Diagnose a missing ')' on what looks like a statement expression.
...
A situation where we can get an invalid ExprResult without an error.
Fixes PR8394. Patch by Justin Bogner!
llvm-svn: 128979
2011-04-06 02:35:25 +00:00
John McCall
75ca6d72c2
Fix getLocForEndOfToken to not double-count spurious internal characters
...
within a token, like trigraphs and escaped newlines.
Patch by Marcin Kowalczyk!
llvm-svn: 128978
2011-04-06 01:50:22 +00:00
Devang Patel
f3d881c840
Add a test case for r128957. It fixed a bug!
...
llvm-svn: 128966
2011-04-06 00:01:52 +00:00
Devang Patel
78019ec14d
Simplify.
...
llvm-svn: 128957
2011-04-05 23:26:36 +00:00
Fariborz Jahanian
10a95ca876
Fixes a regression caused by my last patch.
...
As a result, I had to remove a c++ version of a clang
test which requires more scrutiny on my part.
llvm-svn: 128950
2011-04-05 23:01:27 +00:00
Devang Patel
b87c428055
Emit debug info for function template parameters.
...
llvm-svn: 128948
2011-04-05 22:54:11 +00:00
Ted Kremenek
43d47cc397
Add ToolChain support to get Clang to recognize Ubuntu/ppc and Gentoo/ppc64.
...
llvm-svn: 128944
2011-04-05 22:04:27 +00:00
Fariborz Jahanian
0f4c711895
Generate atomic api for atomic properties (x86 and x86_64
...
targets) when load/store results in multiple instructions.
// rdar://8808439
llvm-svn: 128937
2011-04-05 21:41:23 +00:00
Chandler Carruth
78c7e34485
Commit a bit of a hack to fully handle the situation where variables are
...
marked explicitly as uninitialized through direct self initialization:
int x = x;
With r128894 we prevented warnings about this code, and this patch
teaches the analysis engine to continue analyzing subsequent uses of
'x'. This should wrap up PR9624.
There is still an open question of whether we should suppress the
maybe-uninitialized warnings resulting from variables initialized in
this fashion. The definitely-uninitialized uses should always be warned.
llvm-svn: 128932
2011-04-05 21:36:30 +00:00
Devang Patel
e1dd424380
Remove unintentional check-in.
...
llvm-svn: 128928
2011-04-05 21:05:56 +00:00
Roman Divacky
27ec14fad7
Enable sse4 and aes for SandyBridge. Leave avx support commented out for now.
...
llvm-svn: 128923
2011-04-05 20:32:44 +00:00
Devang Patel
095421b4a8
Fix typo.
...
llvm-svn: 128921
2011-04-05 20:28:21 +00:00