]>
granicus.if.org Git - clang/log
Douglas Gregor [Tue, 1 Feb 2011 15:15:22 +0000 (15:15 +0000)]
Basic support for -mms-bitfields, from Carl Norum!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124661
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Tue, 1 Feb 2011 15:06:18 +0000 (15:06 +0000)]
Support EFI target triple, from Carl Norum!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124660
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Tue, 1 Feb 2011 08:30:38 +0000 (08:30 +0000)]
Make that test case actually test something, and add another test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124654
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Tue, 1 Feb 2011 08:20:08 +0000 (08:20 +0000)]
The code trying to assign a typedef to an anonymous tag declaration was
extremely rambunctious, both on parsing and on template instantiation.
Calm it down, fixing an internal consistency assert on anonymous enum
instantiation manglings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124653
91177308 -0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 1 Feb 2011 05:45:26 +0000 (05:45 +0000)]
Revert 124633. The linker has been told how to merge available_externally.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124651
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ken Dyck [Tue, 1 Feb 2011 02:03:12 +0000 (02:03 +0000)]
Correct units in doxygen comment for NonVirtualSize.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124647
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ken Dyck [Tue, 1 Feb 2011 01:52:10 +0000 (01:52 +0000)]
Convert RecordLayout::NonVirtualSize from bit units to CharUnits.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124646
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Tue, 1 Feb 2011 00:52:10 +0000 (00:52 +0000)]
When initializing struct members, the important thing is that the "initializing" expression is
compatible, not having the same type.
Fix rdar://
8183908 in which compatible vector types weren't initialized properly leading to a crash.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124637
91177308 -0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 1 Feb 2011 00:37:17 +0000 (00:37 +0000)]
Set visibility for available_externally globals. This is important for two reasons:
* llvm-link would complains about mismatched visibility
* If we produce a relocation with an available_externally, it is good to know that
it is hidden.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124633
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Tue, 1 Feb 2011 00:10:29 +0000 (00:10 +0000)]
Perform the bad-address-space conversions check as part of
CheckPointerTypesForAssignment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124632
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 23:20:03 +0000 (23:20 +0000)]
Improve the diagnostic for -Wcustom-atomic-properties. Suggestion by Fariborz!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124620
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Mon, 31 Jan 2011 23:13:11 +0000 (23:13 +0000)]
Make Check*PointerTypesForAssignment private and tell them that they're
working on canonical types already.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124618
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Mon, 31 Jan 2011 22:42:36 +0000 (22:42 +0000)]
Harden Lexer::GetBeginningOfToken() against bogus source locations and
the disappearance/alteration of files.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124616
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Mon, 31 Jan 2011 22:28:28 +0000 (22:28 +0000)]
Slightly reorganize CheckAssignmentConstraints and remove some redundant
logic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124615
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Mon, 31 Jan 2011 22:04:05 +0000 (22:04 +0000)]
Teach Diagnostic::setClient() to free the existing, owned
client. Fixes a libclang leak.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124614
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 31 Jan 2011 22:00:44 +0000 (22:00 +0000)]
libclang: Don't allow RemoveFileOnSignal to be called via libclang, badness can
ensue.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124613
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 31 Jan 2011 22:00:42 +0000 (22:00 +0000)]
Frontend: Add an explicit RemoveFileOnSignal flag argument, to control the
automatic behavior (which is undesirable in a multithreaded context).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124612
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 21:34:11 +0000 (21:34 +0000)]
Add -Wcustom-atomic-properties which warns if an atomic-by-default property has custom getter or setter.
The rationale is that it is highly likely that the user's getter/setter isn't atomically implemented. Off by default.
Addresses rdar://
8782645 .
-Wcustom-atomic-properties and -Wimplicit-atomic-properties are under the -Watomic-properties group.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124609
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Mon, 31 Jan 2011 20:45:38 +0000 (20:45 +0000)]
Document that set-xcode-analyzer should typically be run using sudo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124602
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Mon, 31 Jan 2011 18:51:41 +0000 (18:51 +0000)]
Implement reasonable conversion ranking for Objective-C pointer
conversions (<rdar://problem/
8592139 >) for overload resolution. The
conversion ranking mirrors C++'s conversion ranking fairly closely,
except that we use a same pseudo-subtyping relationship employed by
Objective-C pointer assignment rather than simple checking
derived-to-base conversions. This change covers:
- Conversions to pointers to a specific object type are better than
conversions to 'id', 'Class', qualified 'id', or qualified 'Class'
(note: GCC doesn't perform this ranking, but it matches C++'s rules
for ranking conversions to void*).
- Conversions to qualified 'id' or qualified 'Class' are better than
conversions to 'id' or 'Class', respectively.
- When two conversion sequences convert to the same type, rank the
conversions based on the relationship between the types we're
converting from.
- When two conversion sequences convert from the same non-id,
non-Class type, rank the conversions based on the relationship of
the types we're converting to. (note: GCC allows this ranking even
when converting from 'id', which is extremeley dangerous).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124591
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 17:10:25 +0000 (17:10 +0000)]
Only warn for -Wnon-virtual-dtor for public destructors. Thanks to Benjamin Kramer for the hint!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124585
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Mon, 31 Jan 2011 16:09:46 +0000 (16:09 +0000)]
Implement the suggested resolution to core issue 547, extended to also
allow ref-qualifiers on function types used as template type
arguments. GNU actually allows cv-qualifiers on function types in many
places where it shouldn't, so we currently categorize this as a GNU
extension.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124584
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:05:00 +0000 (07:05 +0000)]
Warn if the class has virtual methods but non-virtual destructor. Addresses rdar://
8756445 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124582
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:54 +0000 (07:04 +0000)]
Don't warn that variables in C++ static member functions shadow fields. Fixes rdar://
8900456 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124581
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:50 +0000 (07:04 +0000)]
Fix the diagnostic when we are shadowing an external variable and there exists a locally scoped extern with the same name.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124580
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:46 +0000 (07:04 +0000)]
Diagnose if extern local variable is followed by non-extern and vice-versa.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124579
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:41 +0000 (07:04 +0000)]
'extern' variables in functions don't shadow externs in global scope. Fixes rdar://
8883302 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124578
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:37 +0000 (07:04 +0000)]
If there were errors, disable 'unused' warnings since they will mostly be noise.
Fixes rdar://
8736362 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124577
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:33 +0000 (07:04 +0000)]
Error for use of field from anonymous struct or union should say "invalid use of nonstatic data member"
not "call to non-static member function without an object argument".
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124576
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:29 +0000 (07:04 +0000)]
Amazing that there are still issues with the fields of anonymous struct/unions..
Allow taking the address of such a field for a pointer-to-member constant. Fixes rdar://
8818236 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124575
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 31 Jan 2011 07:04:24 +0000 (07:04 +0000)]
Fix test that didn't actually test what it wanted to test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124574
91177308 -0d34-0410-b5e6-
96231b3b80d8
Francois Pichet [Mon, 31 Jan 2011 04:54:32 +0000 (04:54 +0000)]
Allow Microsoft attributes in a constructor's parameter list.
This fixes a few compile errors when parsing <regex> from MSVC 2008 with clang.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124573
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sun, 30 Jan 2011 20:45:54 +0000 (20:45 +0000)]
When building with optimizations, emit vtables where the key is not in the
current translation unit as available_externally.
This helps devirtualize the second example in PR3100, comment 18:
struct S { S() {}; virtual void xyzzy(); };
inline void foo(S *s) { s->xyzzy(); }
void bar() { S s; foo(&s); }
This involved four major changes:
1. In DefineUsedVTables, always mark virtual member functions as referenced for
non-template classes and class template specializations.
2. In CodeGenVTables::ShouldEmitVTableInThisTU return true if optimizations are
enabled, even if the key function is not implemented in this translation
unit. We don't ever do this for code compiled with -fapple-kext, because we
don't ever want to devirtualize virtual member function calls in that case.
3. Give the correct linkage for vtables where the key function is not defined.
4. Update the linkage for RTTI structures when necessary.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124565
91177308 -0d34-0410-b5e6-
96231b3b80d8
Roman Divacky [Sun, 30 Jan 2011 08:12:24 +0000 (08:12 +0000)]
Add hardcoded -L/usr/lib after all -L options to the FreeBSD linker
invocation.
This mimics what gcc does and fixes libtool check for libraries.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124558
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 22:39:23 +0000 (22:39 +0000)]
Fix test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124555
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 22:15:18 +0000 (22:15 +0000)]
Remove dead code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124554
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 22:10:32 +0000 (22:10 +0000)]
When emitting RTTI for a non-class type, compute the visibility of the RTTI data based on the explicit visibility of the type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124553
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Sat, 29 Jan 2011 21:21:49 +0000 (21:21 +0000)]
Support for -plugin-arg- with -add-plugin
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124551
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 20:59:35 +0000 (20:59 +0000)]
Move GetLLVMVisibility to CodeGenModule.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124550
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 20:57:16 +0000 (20:57 +0000)]
Update tests.
I'm still not sure if having the typenames be visible with -hidden-weak-vtables, but I think it makes sense.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124549
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 20:36:11 +0000 (20:36 +0000)]
Add RTTIBuilder::GetAddrOfTypeName which uses the newly added CreateOrReplaceCXXRuntimeVariable.
Set the visibility for typeinfo names.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124548
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 20:24:48 +0000 (20:24 +0000)]
Change CodeGenModule::setTypeVisibility to take a TypeVisibilityKind enum instead of an "IsForRTTI" flag.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124546
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 19:52:22 +0000 (19:52 +0000)]
Add a test for RTTI visibility.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124543
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 19:41:00 +0000 (19:41 +0000)]
Replace an isa/cast with a dyn_cast.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124542
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 19:39:23 +0000 (19:39 +0000)]
Get rid of an unneeded parameter from setGlobalVisibility.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124541
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 19:34:19 +0000 (19:34 +0000)]
Give VTTs the right visibility.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124540
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 19:16:51 +0000 (19:16 +0000)]
Make emitting a VTT a two-step process, much like emitting a VTable. You first get the address of the VTT, and then pass it to EmitVTTDefinition.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124539
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 18:25:07 +0000 (18:25 +0000)]
Use CGM.CreateOrReplaceCXXRuntimeVariable in CGVTables.cpp
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124538
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 18:20:20 +0000 (18:20 +0000)]
Add a new function, to be used by CGRTTI, CGVTables and CGVTT (which each has their own copy of this code).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124537
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ken Dyck [Sat, 29 Jan 2011 17:53:12 +0000 (17:53 +0000)]
Replace a literal '8' with getCharWidth().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124536
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 05:26:32 +0000 (05:26 +0000)]
Remove IsDefinition from CodeGenModule::setTypeVisibility; it is always true.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124529
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 05:04:11 +0000 (05:04 +0000)]
When trying to get the most derived class, don't assume that we can ignore all casts. We can only ignore derived-to-base and no-op casts. Fixes selfhost.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124528
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 03:52:01 +0000 (03:52 +0000)]
When calling a virtual member function on a base class and the most derived class is marked 'final', we can devirtualize the call.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124524
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Sat, 29 Jan 2011 03:18:56 +0000 (03:18 +0000)]
When doing a derived-to-base class through a virtual class, we don't have to get the vbase offset from the vtable if the derived class is marked final.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124523
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 28 Jan 2011 23:42:29 +0000 (23:42 +0000)]
More work to support -fapple-kext regarding
indirect vf calls and addition of extra entry
at bottom of vtbls.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124507
91177308 -0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Fri, 28 Jan 2011 23:41:54 +0000 (23:41 +0000)]
Document how to add an attribute to clang. This should be reviewed by someone
who actually knows how it works.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124506
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Fri, 28 Jan 2011 22:02:36 +0000 (22:02 +0000)]
Fix some corner cases in the __is_base_of logic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124505
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Fri, 28 Jan 2011 20:10:46 +0000 (20:10 +0000)]
Add my new file to the CMake lists, sorry about that.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124503
91177308 -0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 28 Jan 2011 18:28:30 +0000 (18:28 +0000)]
Make the FreeBSD driver test more robust so it doesn't fail when there's a single lib32 path.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124494
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Fri, 28 Jan 2011 11:13:47 +0000 (11:13 +0000)]
Move all the cleanups framework code into a single file.
Pure motion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124484
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Fri, 28 Jan 2011 10:53:53 +0000 (10:53 +0000)]
Reorganize the value-dominance metaprogram and introduce a specialization
for CodeGen's RValue type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124483
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Fri, 28 Jan 2011 08:37:24 +0000 (08:37 +0000)]
Convert the exception-freeing cleanup over to the conditional cleanups code,
fixing a crash which probably nobody was ever going to see. In doing so,
fix a horrendous number of problems with the conditional-cleanups code.
Also, make conditional cleanups re-use the cleanup's activation variable,
which avoids some unfortunate repetitiveness.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124481
91177308 -0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 28 Jan 2011 06:07:34 +0000 (06:07 +0000)]
PR9037: Allow override, final, and new as an extension on inline members.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124477
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Fri, 28 Jan 2011 06:05:16 +0000 (06:05 +0000)]
Not really any point to testing control flow in this test without
ret duplication.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124476
91177308 -0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 28 Jan 2011 05:13:18 +0000 (05:13 +0000)]
Update exceptions.m for r124462.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124474
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 28 Jan 2011 02:26:04 +0000 (02:26 +0000)]
Give OpaqueValueExpr a source location, because its source location
might be queried in places where we absolutely require a valid
location (e.g., for template instantiation). Fixes some major
brokenness in the use of __is_convertible_to.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124465
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 23:24:55 +0000 (23:24 +0000)]
Allow elision of invocations of move constructors from temporary objects.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124455
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 23:22:05 +0000 (23:22 +0000)]
When producing IR for a lvalue-to-rvalue cast *as an lvalue*, only
non-class prvalues actually require the realization of a
temporary. For everything else, we already have an lvalue (or class
prvalue) in the subexpression.
Note: we're missing some move elision in this case. I'll tackle that next.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124453
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 27 Jan 2011 23:18:15 +0000 (23:18 +0000)]
Fix an objective-c rewriter bug rewriting a __block
variable declaration of a struct declared type.
// rdar://
8918702
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124451
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 22:31:44 +0000 (22:31 +0000)]
Teach the evaluation of the __is_convertible_to trait to translate
access control errors into SFINAE errors, so that the trait provides
enough support to implement the C++0x std::is_convertible type trait.
To get there, the SFINAETrap now knows how to set up a SFINAE context
independent of any template instantiations or template argument
deduction steps, and (separately) can set a Sema flag to translate
access control errors into SFINAE errors. The latter can also be
useful if we decide that access control errors during template argument
deduction should cause substitution failure (rather than a hard error)
as has been proposed for C++0x.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124446
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 22:00:02 +0000 (22:00 +0000)]
Adjust casing of attributes in examples.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124445
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 21:06:28 +0000 (21:06 +0000)]
Separate the access-control diagnostics from other diagnostics that do not have SFINAE behavior.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124441
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 20:35:44 +0000 (20:35 +0000)]
Document some serious badness in our evaluation of the type traits: we need to be sure we have complete types in many cases
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124428
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 20:28:01 +0000 (20:28 +0000)]
Implement the Microsoft __is_convertible_to type trait, modeling the
semantics after the C++0x is_convertible type trait. This
implementation is not 100% complete, because it allows access errors
to be hard errors (rather than just evaluating false).
Original patch by Steven Watanabe!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124425
91177308 -0d34-0410-b5e6-
96231b3b80d8
Abramo Bagnara [Thu, 27 Jan 2011 19:55:10 +0000 (19:55 +0000)]
Fixed parameter names.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124408
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 19:49:07 +0000 (19:49 +0000)]
Fix download link.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124405
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 19:42:34 +0000 (19:42 +0000)]
Add missing </a>
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124403
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 19:41:08 +0000 (19:41 +0000)]
Update checker build and post release notes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124402
91177308 -0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Thu, 27 Jan 2011 19:17:54 +0000 (19:17 +0000)]
Revert r124217 because it didn't catch the actual error case it was trying to
catch:
lock_guard(my_mutex);
declares a variable instead of creating a temporary.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124398
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 18:51:39 +0000 (18:51 +0000)]
Teach -Wuninitialized about indirect goto. Fixes PR 9071.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124394
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 18:50:39 +0000 (18:50 +0000)]
Clean up the diagnostic text for delegating constructors
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124393
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 18:43:03 +0000 (18:43 +0000)]
Wire up attributes 'ns_consumed' and 'cf_consumed' in the static analyzer's ObjC retain/release checker.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124386
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 18:39:26 +0000 (18:39 +0000)]
Test for previous commit
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124385
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Thu, 27 Jan 2011 18:16:48 +0000 (18:16 +0000)]
Allow #pragma unused to be used on global variables like gcc. Fixes rdar://
8793832 .
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124383
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 18:02:58 +0000 (18:02 +0000)]
Teach ASTUnit to save the specified target features, since
TargetInfo::CreateTargetInfo() mangles the target options in a way
that is not idempotent. Fixes <rdar://problem/
8807535 >.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124382
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 27 Jan 2011 16:27:11 +0000 (16:27 +0000)]
Add libclang functions to determine the const/volatile/restrict
qualifiers on a CXType. Patch from Stefan Seefeld, test by me.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124377
91177308 -0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Thu, 27 Jan 2011 16:17:11 +0000 (16:17 +0000)]
[analyzer] Fix crash when handling dot syntax on 'super'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124376
91177308 -0d34-0410-b5e6-
96231b3b80d8
Axel Naumann [Thu, 27 Jan 2011 10:55:51 +0000 (10:55 +0000)]
TextDiagnosticPrinter.cpp: Show diagnostics as far as possible even with invalid PresomedLoc, instead of just silencing it.
FileManager.cpp: Allow virtual files in nonexistent directories.
FileManager.cpp: Close FileDescriptor for virtual files that correspond to actual files.
FileManager.cpp: Enable virtual files to be created even for files that were flagged as NON_EXISTENT_FILE, e.g. by a prior (unsuccessful) addFile().
ASTReader.cpp: Read a PCH even if the original source files cannot be found.
Add a test for reading a PCH of a file that has been removed and diagnostics referencing that file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124374
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Thu, 27 Jan 2011 09:37:56 +0000 (09:37 +0000)]
Do a proper recursive lookup when deciding whether a class's usual
deallocation function has a two-argument form. Store the result of this
check in new[] and delete[] nodes.
Fixes rdar://problem/
8913519
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124373
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Thu, 27 Jan 2011 08:17:49 +0000 (08:17 +0000)]
Provide Type::castAs<>, which is to getAs<> what cast<> is to dyn_cast<>.
Also provide a method to grab the base element type of a type without
stressing out over qualifiers (but give it a nice scary name).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124367
91177308 -0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 27 Jan 2011 07:10:08 +0000 (07:10 +0000)]
Fix whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124364
91177308 -0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 27 Jan 2011 07:09:49 +0000 (07:09 +0000)]
7bit-ize.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124363
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 07:02:03 +0000 (07:02 +0000)]
Fix HTML highlighting and add missing line.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124362
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 06:59:29 +0000 (06:59 +0000)]
Fix a few typos in HTML documentation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124361
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 06:54:14 +0000 (06:54 +0000)]
Hook up attribute ns_consumes_self in the ObjC retain/release checker in the static analyzer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124360
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 05:18:52 +0000 (05:18 +0000)]
Tweak -Wuninitialized fixit for '_Bool' types to be initialized to 0, and C++ 'bool' types to false.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124356
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 02:57:57 +0000 (02:57 +0000)]
Teach -Wuninitialized to suggest "= false" for initializing bool variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124352
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Thu, 27 Jan 2011 02:46:02 +0000 (02:46 +0000)]
Notes on dynamic array cookies in MSVC.
My thanks to chapuni for his help in investigating this.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124351
91177308 -0d34-0410-b5e6-
96231b3b80d8
John McCall [Thu, 27 Jan 2011 02:37:01 +0000 (02:37 +0000)]
Import three interesting bits that apply only to C++ methods.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124349
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 27 Jan 2011 02:29:34 +0000 (02:29 +0000)]
Teach -Wuninitialized not to assert when analyzing
blocks that reference captured variables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124348
91177308 -0d34-0410-b5e6-
96231b3b80d8