Anders Carlsson
bcb2e4cb63
Don't try to explicitly zero out bit-fields.
...
llvm-svn: 105391
2010-06-03 15:36:07 +00:00
Zhongxing Xu
ea9fcffe03
Make addStmt always add stmt. Delegate other cases to Visit() directly.
...
llvm-svn: 105384
2010-06-03 06:43:23 +00:00
Zhongxing Xu
41cdf585c2
CFG: add all LHS of assingments as lvalue. This improves support for C++ reference. Patch by Jordy.
...
llvm-svn: 105383
2010-06-03 06:23:18 +00:00
Zhongxing Xu
3b7294777c
Add comments.
...
llvm-svn: 105382
2010-06-03 06:19:01 +00:00
Anders Carlsson
a2f74f3c98
Add all final overriders to the map.
...
llvm-svn: 105374
2010-06-03 01:00:02 +00:00
Fariborz Jahanian
d1b378e08d
Block C++ code gen. Adds support for block reference argument
...
types. Executable test will be added to LLVM test suite.
(radar 8041962).
llvm-svn: 105347
2010-06-02 21:35:17 +00:00
John McCall
6a7f9f5c8f
Don't try to emit the vtable for a class just because we're emitting a
...
virtual function from it.
Fixes PR7241.
llvm-svn: 105345
2010-06-02 21:22:02 +00:00
Daniel Dunbar
f5e075d392
Headers: Fix quoting of macro arguments in a couple more places.
...
llvm-svn: 105331
2010-06-02 16:35:01 +00:00
Anders Carlsson
b4d2cdbb46
Don't substitute 'St' for 'std' when the namespace is nested inside another namespace.
...
llvm-svn: 105330
2010-06-02 15:58:27 +00:00
Daniel Dunbar
6d3bc0898e
Fix undefined behavior, noticed by GCC 4.5. Patch by Dimitry Andric!
...
llvm-svn: 105329
2010-06-02 15:47:10 +00:00
Daniel Dunbar
6906b04457
Fix compiler warning about to false -> pointer conversion; patch by Dimitry Andric!
...
llvm-svn: 105328
2010-06-02 15:47:03 +00:00
Daniel Dunbar
f7ced25a2a
Fix unintentional method call due to false -> pointer conversion; patch by Dimitry Andric!
...
llvm-svn: 105327
2010-06-02 15:46:52 +00:00
Anders Carlsson
a85c1469c7
When building RTTI descriptors for pointer types, we need to get the unqualified array type and the qualifiers from it.
...
llvm-svn: 105326
2010-06-02 15:44:35 +00:00
Nate Begeman
661ba6d847
Fix vget_lane/vset_lane
...
llvm-svn: 105317
2010-06-02 07:15:01 +00:00
Douglas Gregor
876cec2898
typeid() produces type information for the cv-unqualified version of
...
the type. Thanks to Anders for the bug report!
llvm-svn: 105314
2010-06-02 06:16:02 +00:00
Anders Carlsson
d951a7ebf8
Correctly mangle unsigned integer literals where the high bit is set.
...
llvm-svn: 105312
2010-06-02 05:07:26 +00:00
Anders Carlsson
728fe444f1
Correctly mangle variadic functions that don't have any other parameters.
...
llvm-svn: 105311
2010-06-02 04:40:13 +00:00
Anders Carlsson
d563923cf1
When mangling member function pointers, fake adding a substitution corresponding to the function type.
...
llvm-svn: 105310
2010-06-02 04:29:50 +00:00
Nate Begeman
464d280b3c
Checkpoint arm_neon.h generation with tablegen
...
llvm-svn: 105306
2010-06-02 00:34:41 +00:00
Anders Carlsson
04e51cca94
More cleanup.
...
llvm-svn: 105301
2010-06-01 23:52:26 +00:00
Anders Carlsson
042ce2d8f1
More cleanup.
...
llvm-svn: 105299
2010-06-01 23:47:05 +00:00
Anders Carlsson
79547c3fbd
Cleanup.
...
llvm-svn: 105296
2010-06-01 23:17:37 +00:00
John McCall
75b960e5ee
Alter the ExternalASTSource interface to permit by-name lookups. PCH continues to
...
bring in the entire lookup table at once.
Also, give ExternalSemaSource's vtable a home. This is important because otherwise
any reference to it will cause RTTI to be emitted, and since clang is compiled
with -fno-rtti, that RTTI will contain unresolved references (to ExternalASTSource's
RTTI). So this change makes it possible to subclass ExternalSemaSource from projects
compiled with RTTI, as long as the subclass's home is compiled with -fno-rtti.
llvm-svn: 105268
2010-06-01 09:23:16 +00:00
Zhongxing Xu
ce83656f97
Limit the use of BindDefault().
...
llvm-svn: 105265
2010-06-01 04:49:26 +00:00
Zhongxing Xu
527ff6d1dc
Add support for calloc() in MallocChecker. Patch by Jordy Rose, with my
...
modification.
llvm-svn: 105264
2010-06-01 03:01:33 +00:00
Ted Kremenek
305a0a7416
Fix crash in code completion when an ObjCMethodDecl doesn't have an associated @interface.
...
Fixes <rdar://problem/8026215>.
llvm-svn: 105256
2010-05-31 21:43:10 +00:00
Chris Lattner
47054fbbe9
Minor tweaks on doug's objc recovery patch: the caller
...
of isSimpleObjCMessageExpression checks the language,
so change a dynamic check into an assert.
isSimpleObjCMessageExpression is expensive, so only do it
in the common case when it is likely to matter: when the [
of the postfix expr starts on a new line. This should avoid
doing lookahead for every array expression.
llvm-svn: 105229
2010-05-31 18:18:22 +00:00
Charles Davis
7de6638173
Make methods non-virtual again for now. I accidentally committed this in
...
preparation for an alternate mangler.
llvm-svn: 105224
2010-05-31 17:07:59 +00:00
Douglas Gregor
990ccace5b
When we see the a '[' in a postfix expression in Objective-C, perform
...
a simple, quick check to determine whether the expression starting
with '[' can only be an Objective-C message send. If so, don't parse
it as an array subscript expression. This improves recovery for, e.g.,
[a method1]
[a method2]
so that we now produce
t.m:10:13: error: expected ';' after expression
[a method]
^
instead of some mess about expecting ']'.
llvm-svn: 105221
2010-05-31 14:40:22 +00:00
Chandler Carruth
9e814c0d80
Silence GCC warning about an accessible non-virtual destructor in a class with
...
virtual methods.
Please review cdavis, should these methods even be virtual?
llvm-svn: 105218
2010-05-31 08:27:42 +00:00
Ted Kremenek
4708f5a89b
After conversations with Zhongxing Xu and Jordy Rose, refine the logic in
...
RegionStoreManager::RetrieveElement() that handles indexing into a larger scalar
object to only consult the direct binding of a super region if it is a scalar.
This isn't perfect yet, and a big FIXME is attached to the code. This causes
the test case for PR 7218 now to pass.
llvm-svn: 105195
2010-05-31 01:22:04 +00:00
Chris Lattner
52d96ac930
simpler fix for rdar://8044135 - escaped newlines have already
...
been processed, so they don't have to be tip-toed around.
llvm-svn: 105182
2010-05-30 23:27:38 +00:00
Douglas Gregor
fe4a4107d8
Improve our handling of NULL after an escaping '\' in a string
...
literal. Fixes <rdar://problem/8044135>.
llvm-svn: 105181
2010-05-30 22:59:50 +00:00
Douglas Gregor
d5a479cbb5
Don't try to parse class template specializations in C. It can only
...
lead to heartache. Fixes <rdar://problem/8044088>.
llvm-svn: 105178
2010-05-30 22:30:21 +00:00
Douglas Gregor
2683c28ff6
Improve parser recovery when we try to parse a call expression but the
...
called function itself is invalid (e.g., because of a semantic error
referring to that declaration). Fixes <rdar://problem/8044142>.
llvm-svn: 105175
2010-05-30 22:23:08 +00:00
Nick Lewycky
71eac6e114
Make macro safe in the face of users who pass "addr+64". Addition of void* is
...
invalid.
llvm-svn: 105172
2010-05-30 18:26:21 +00:00
Anders Carlsson
107b4e096c
Remove unused parameter to FinalOverriders::PropagateOverrider.
...
llvm-svn: 105171
2010-05-30 18:23:41 +00:00
Nick Lewycky
6cbc3f7de4
Refactor the Is{Std,Clang,LLVM}Namespace methods and rename 'isClangAttr' to
...
'IsClangAttr' to match prevailing style in this file. Patch by Jon Mulder!
llvm-svn: 105170
2010-05-30 18:05:23 +00:00
Alexis Hunt
ed05325dbe
Convert DeclNodes to use TableGen.
...
The macros required for DeclNodes use have changed to match the use of
StmtNodes. The FooFirst enumerator constants have been named firstFoo
to match usage elsewhere.
llvm-svn: 105165
2010-05-30 07:21:58 +00:00
Anders Carlsson
7498b32117
And now for the best part: Removing the old code.
...
llvm-svn: 105162
2010-05-30 06:56:46 +00:00
Anders Carlsson
b1fcdd063c
Turn on the new empty base subobject tracking code. It's a bit faster than the previous code. However, it still has quadratic performance, something which I intend to fix shortly in a subsequent patch.
...
llvm-svn: 105161
2010-05-30 06:52:33 +00:00
Douglas Gregor
6ed3eb8a48
Teach code-completion for calls to be more careful with a
...
potentially-NULL "function" argument.
llvm-svn: 105152
2010-05-30 06:10:08 +00:00
Eli Friedman
c8731be34d
Fix for PR7040: Don't try to compute the LLVM type for a function where it
...
isn't possible to compute.
This patch is mostly refactoring; the key change is the addition of the code
starting with the comment, "Check whether the function has a computable LLVM
signature." The solution here is essentially the same as the way the
vtable code handles such functions.
llvm-svn: 105151
2010-05-30 06:03:20 +00:00
Douglas Gregor
7aa6b229fe
Teach code completion to adjust its completion priorities based on the
...
type that we expect to see at a given point in the grammar, e.g., when
initializing a variable, returning a result, or calling a function. We
don't prune the candidate set at all, just adjust priorities to favor
things that should type-check, using an ultra-simplified type system.
llvm-svn: 105128
2010-05-30 01:49:25 +00:00
Daniel Dunbar
0e15c9aef6
Accept '#pragma options align=mac68k' on Darwin/PPC and Darwin/PPC64.
...
llvm-svn: 105116
2010-05-30 00:07:30 +00:00
Anders Carlsson
a7774a685d
Cleanup.
...
llvm-svn: 105114
2010-05-29 21:10:24 +00:00
Anders Carlsson
a60b86a3fa
Make EmptySubobjectMap::CanPlaceBaseAtOffset take a BaseSubobjectInfo as well.
...
llvm-svn: 105113
2010-05-29 20:49:49 +00:00
Anders Carlsson
d7f3fcf248
Change RecordLayoutBuilder::LayoutBase to take a BaseSubobjectInfo. No functionality change.
...
llvm-svn: 105112
2010-05-29 20:47:33 +00:00
Anders Carlsson
6b0d914ad0
Rework the way virtual primary bases are added when laying out classes. Instead of doing it as a separate step, we now use the BaseSubobjectInfo and use it when laying out the bases. This fixes a bug where we would either not add a primary virtual base at all, or add it at the wrong offset.
...
llvm-svn: 105110
2010-05-29 19:44:50 +00:00
Anders Carlsson
d6ff5d7787
Change LayoutVirtualBase to also take a BaseSubobjectInfo.
...
llvm-svn: 105104
2010-05-29 17:48:36 +00:00
Anders Carlsson
bb0e6787b0
Change RecordLayoutBuilder::LayoutNonVirtualBase to take a BaseSubobjectInfo. No functionality change.
...
llvm-svn: 105103
2010-05-29 17:42:25 +00:00
Anders Carlsson
e3c24c7033
Move computing the base subobject info for a class into the RecordLayoutBuilder because we're going to need it to be able to correctly add offsets for primary virtual bases.
...
llvm-svn: 105102
2010-05-29 17:35:14 +00:00
Zhongxing Xu
94aec9381d
Revert r105097. Thinking about a better fix.
...
llvm-svn: 105099
2010-05-29 06:49:04 +00:00
Zhongxing Xu
928a190a8e
Fix PR7218. Patch by Jordy Rose.
...
llvm-svn: 105097
2010-05-29 06:23:24 +00:00
Douglas Gregor
117ef277cb
More PowerPC paths on Darwin
...
llvm-svn: 105084
2010-05-29 01:21:11 +00:00
Douglas Gregor
eb0bdf08dc
Add C++ include paths for Darwin PowerPC
...
llvm-svn: 105083
2010-05-29 01:15:12 +00:00
Chris Lattner
2304c4d0ff
add fedora 13 paths, patch by Hendrik Richter.
...
llvm-svn: 105082
2010-05-29 01:01:38 +00:00
John McCall
f7bcc81213
Copy source information for the inner type of an elaborated type; fixes some
...
valgrind problems.
llvm-svn: 105062
2010-05-28 23:32:21 +00:00
Nate Begeman
b9ed185e33
Implement remaining items in neon td file. Still need to modify emitter to generate a proper header.
...
llvm-svn: 105058
2010-05-28 23:15:59 +00:00
Fariborz Jahanian
6e81492151
Empty enum in c is now error to match gcc's behavior.
...
(radar 8040068).
llvm-svn: 105011
2010-05-28 22:23:22 +00:00
Douglas Gregor
7e5aeac10a
Only provide a source location for an anonymous tag if the location is valid
...
llvm-svn: 105010
2010-05-28 21:47:04 +00:00
Anders Carlsson
a7f3cdb0f2
Rename BaseInfo to BaseSubobjectInfo.
...
llvm-svn: 105007
2010-05-28 21:24:37 +00:00
Anders Carlsson
056818f8a2
Move BaseInfo outside of the EmptySubobject class.
...
llvm-svn: 105002
2010-05-28 21:13:31 +00:00
Daniel Dunbar
a688566f0a
Sema: Fix comment, apparently #pragma options align=power is just the same as
...
align=native, at least for the platforms we support.
llvm-svn: 105000
2010-05-28 20:08:00 +00:00
Daniel Dunbar
51c3387b5e
Fix personality function name when using SjLj exceptions.
...
llvm-svn: 104999
2010-05-28 19:43:36 +00:00
Daniel Dunbar
5794c6fa43
Sema: Just ignore '#pragma options align=power' for now, this is no worse than
...
what we used to be doing, and makes sure that paired '#pragma options
align=reset' won't fail.
llvm-svn: 104998
2010-05-28 19:43:33 +00:00
Fariborz Jahanian
93bef10131
Fix a miscompile of wchar pascal strings.
...
(radar 8020384)
llvm-svn: 104996
2010-05-28 19:40:48 +00:00
John McCall
f24d7bbbcd
A more minimal fix for PR6762.
...
llvm-svn: 104991
2010-05-28 18:45:08 +00:00
John McCall
61d8258fa3
Roll back r104941.
...
llvm-svn: 104990
2010-05-28 18:25:28 +00:00
Jakob Stoklund Olesen
f298e02c9d
Let the backend decide which scheduler and register allocator to use.
...
Currently, the backend uses the same policy, but it will soon switch to
-regalloc=fast for -O0.
llvm-svn: 104984
2010-05-28 18:13:31 +00:00
Fariborz Jahanian
3336de141a
zero-cost exception API for NeXt runtime.
...
rethrow inside @catch block must use objc_exception_rethrow
API. Fixes radar 8037512. Test will be added to LLVM
test suite.
llvm-svn: 104964
2010-05-28 17:34:43 +00:00
Daniel Dunbar
99ca8b71cd
Driver: Spell -relax-all correctly when calling the cc1as tool.
...
llvm-svn: 104955
2010-05-28 16:43:21 +00:00
John McCall
f9c94093f9
Disable exception-spec compatibility checking under -fno-exceptions.
...
Fixes PR7243.
llvm-svn: 104942
2010-05-28 08:37:35 +00:00
John McCall
2177a9b65a
Add a new attribute on records, __attribute__((adl_invisible)), and define
...
the x86-64 __va_list_tag with this attribute. The attribute causes the
affected type to behave like a fundamental type when considered by ADL.
(x86-64 is the only target we currently provide with a struct-based
__builtin_va_list)
Fixes PR6762.
llvm-svn: 104941
2010-05-28 08:20:36 +00:00
John McCall
08bede4c7b
Don't just skip over the entire tag definition if the parser action didn't
...
give us a decl back. Makes -cc1 -parse-noop handle a substantially larger
amount of the C++ grammar.
llvm-svn: 104940
2010-05-28 08:11:17 +00:00
John McCall
0af3d3b0f4
Optimize and complete associated-class-and-namespace collection from
...
a type.
llvm-svn: 104938
2010-05-28 06:08:54 +00:00
Douglas Gregor
ed2540d205
When we complain about a member being inaccessible due to a constraint
...
along an access path, add another note pointing at the member we
actually found.
llvm-svn: 104937
2010-05-28 04:34:55 +00:00
Douglas Gregor
1f1be08645
Add CMake goop to get arm_neon.h generated
...
llvm-svn: 104934
2010-05-28 04:22:06 +00:00
Nate Begeman
07f9b0c784
Convert arm_neon.h into arm_neon.td, from which arm_neon.h will be built
...
Add Makefile support for building arm_neon.h from arm_neon.td
Need to figure out an appropriate cmake rule for this.
llvm-svn: 104928
2010-05-28 02:20:47 +00:00
Daniel Dunbar
eaff5fa30a
Frontend: Sprinkle in some C++ header paths for ARM/Darwin. Also, don't add x86
...
paths on non-x86.
I really detest this file.
llvm-svn: 104921
2010-05-28 01:54:31 +00:00
Dan Gohman
ed0347333e
This cast is no longer needed; the FIXME is fixed.
...
llvm-svn: 104919
2010-05-28 01:45:35 +00:00
John McCall
4583186b8b
When filtering out previous declarations of friend functions, consider the
...
lookup context, not the direct semantic context. Fixes PR7230.
llvm-svn: 104917
2010-05-28 01:41:47 +00:00
Dan Gohman
3743b8cf49
This cast is no longer required.
...
llvm-svn: 104916
2010-05-28 01:39:35 +00:00
Douglas Gregor
d37c59dae7
Don't put method bodies into code completions unless code patterns are
...
turned on.
llvm-svn: 104909
2010-05-28 00:57:46 +00:00
Douglas Gregor
70febae768
Do not produce types as valid code completions when we're in an
...
expression context in C/Objective-C, or when we're in an
@interface/@implementation/@protocol in Objective-C(++).
llvm-svn: 104908
2010-05-28 00:49:12 +00:00
Dan Gohman
04f8720118
Add several more predefines from modern versions of GCC.
...
llvm-svn: 104906
2010-05-28 00:27:15 +00:00
Douglas Gregor
f4c33349b5
Make -code-completion-patterns only cover multi-line code
...
completions. Plus, tweak a few completion patterns to better reflect
the language grammar.
llvm-svn: 104905
2010-05-28 00:22:41 +00:00
Jim Grosbach
4cf59b9e91
Update __builtin_setjmp codegen to match llvmCore changes in r104900.
...
llvm-svn: 104902
2010-05-27 23:54:20 +00:00
Douglas Gregor
a817a19bc6
Implement a code-completion hook for the receiver of an Objective-C
...
message. This completion gives better results than just using the
"expression" completion, which is effectively what happened before.
llvm-svn: 104895
2010-05-27 23:06:34 +00:00
Douglas Gregor
fd42e9542c
Tweak the fix-it for a copy constructor declared to take its argument
...
by-value. We now only prepend a space if it is needed.
llvm-svn: 104889
2010-05-27 21:28:21 +00:00
Anders Carlsson
da265b8d63
When null-initializing bases with data member pointers, don't assert on virtual bases. Just initialize them to null.
...
llvm-svn: 104868
2010-05-27 18:51:01 +00:00
John McCall
02269a66b3
Enable the implementation of __builtin_setjmp and __builtin_longjmp. Not all
...
LLVM backends support these yet.
llvm-svn: 104867
2010-05-27 18:47:06 +00:00
Daniel Dunbar
9c84d4a8a0
Parse/Sema: Add support for '#pragma options align=packed', which, it should be
...
noted, is not the same as __attribute__((packed)). That would be ridiculous!
llvm-svn: 104865
2010-05-27 18:42:17 +00:00
Daniel Dunbar
663e8094ae
Parse/Sema: Add support for '#pragma options align=native'.
...
llvm-svn: 104864
2010-05-27 18:42:09 +00:00
Anders Carlsson
db319761e7
More work on the empty subobject map. This code is not yet used.
...
llvm-svn: 104861
2010-05-27 18:20:57 +00:00
Dan Gohman
cab4933f95
MemoryBuffer::getSTDIN may return a null pointer if an error occurs.
...
llvm-svn: 104856
2010-05-27 17:33:40 +00:00
Fariborz Jahanian
c77f0f394a
Fix 80-column.
...
llvm-svn: 104847
2010-05-27 16:35:00 +00:00
Fariborz Jahanian
9ea5839cb6
Objective-c++ IR gen.
...
Flag synthesized struct decl. as non-empty so
CXX side of ir gen does not skip its Null initialization.
Fixes radar 8027844 for objc++'s collection statement.
llvm-svn: 104837
2010-05-27 16:05:06 +00:00
Douglas Gregor
205a361413
When we've parsed a nested-name-specifier in a member access
...
expression, "forget" about the object type; only the
nested-name-specifier matters for name lookup purposes. Fixes PR7239.
llvm-svn: 104834
2010-05-27 15:25:59 +00:00
Daniel Dunbar
3eeeccd6e2
Darwin/ARM seems to support mac68k align as well.
...
llvm-svn: 104828
2010-05-27 07:00:26 +00:00
Daniel Dunbar
9296f63ff0
Driver: Update -O -> -O2 replacement for addition of -O0 option.
...
llvm-svn: 104823
2010-05-27 06:51:08 +00:00
John McCall
bf8c519a0d
Require a complete type when performing the qualified lookup during
...
instantiation of a dependent elaborated type specifier. Fixes PR 7199.
llvm-svn: 104822
2010-05-27 06:40:31 +00:00
John McCall
943fae95f5
Implement __builtin_init_dwarf_reg_size_table and __builtin_dwarf_sp_column
...
for 32-bit MIPS processors. Hat-tip to rdivacky for providing gcc dumps
on this.
llvm-svn: 104816
2010-05-27 06:19:26 +00:00
Daniel Dunbar
06e2cc3f86
Driver: Add support for -m[no-]relax-all, and make it the default at -O0.
...
llvm-svn: 104815
2010-05-27 06:18:05 +00:00
Daniel Dunbar
6da1098b4b
Sema: Add initial support for '#pragma options align=mac68k'.
...
- Docs are fairly sketchy, if someone wants to pore through gcc to look for
holes I'd appreciate any failing test cases!
llvm-svn: 104809
2010-05-27 05:45:51 +00:00
Anders Carlsson
439edd1aea
More work on the new empty subobject map.
...
llvm-svn: 104808
2010-05-27 05:41:06 +00:00
Daniel Dunbar
c43b6b20d5
Driver: Add clang -cc1 -mrelax-all option, which sets relaxes all instructions when using -integrated-as.
...
llvm-svn: 104807
2010-05-27 05:39:39 +00:00
Daniel Dunbar
592a85c137
Strip trailing whitespace.
...
llvm-svn: 104801
2010-05-27 02:25:46 +00:00
Daniel Dunbar
fc6507ef58
AST: Add AlignMac68kAttr, not yet used.
...
llvm-svn: 104800
2010-05-27 02:25:39 +00:00
Daniel Dunbar
4dbe15d437
Sema: Factor out struct for alignment stack entries.
...
llvm-svn: 104799
2010-05-27 02:25:27 +00:00
Daniel Dunbar
8804f2e253
Sema: Replace getPragmaPackAlignment with AddAlignmentAttributesForRecord, which
...
exposes less details.
llvm-svn: 104797
2010-05-27 01:53:40 +00:00
John McCall
c2af939ab4
When deciding whether a deferred declaration has already been emitted,
...
aliases count as definitions regardless of whether their target has been
emitted yet. Fixes PR 7142.
llvm-svn: 104796
2010-05-27 01:45:30 +00:00
Daniel Dunbar
401304462a
AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.
...
llvm-svn: 104795
2010-05-27 01:12:46 +00:00
Daniel Dunbar
bd60652ace
Sema: Reject '#pragma options align=mac68k' everywhere except i386-apple-darwin.
...
llvm-svn: 104789
2010-05-27 00:35:16 +00:00
Ted Kremenek
15a0abd399
Discard qualifiers for ElementRegions so that a 'const' doesn't change the lookup semantics
...
in the symbol store. We may wish to push this down into the StoreManager itself.
llvm-svn: 104788
2010-05-27 00:29:00 +00:00
Anders Carlsson
c121b4e59f
More work on the empty subobjects map.
...
llvm-svn: 104787
2010-05-27 00:07:01 +00:00
Daniel Dunbar
69dac58e7d
Sema: Support for #pragma options align={reset,natural}. '#pragma options align'
...
shares the stack with '#pragma pack', who knew!?
llvm-svn: 104786
2010-05-27 00:04:40 +00:00
Daniel Dunbar
75c9be7e80
Parse: Add support for '#pragma options align'.
...
Also, fix a source location bug with the rparen in #pragma pack.
llvm-svn: 104784
2010-05-26 23:29:06 +00:00
John McCall
23f6626262
Correctly pass aggregates by reference when emitting thunks.
...
llvm-svn: 104778
2010-05-26 22:34:26 +00:00
Douglas Gregor
a2db793ff0
Introduce priorities into the code-completion results.
...
llvm-svn: 104751
2010-05-26 22:00:08 +00:00
Fariborz Jahanian
5f81b9f3f6
Patch to fix a irgen crash accessing an initialized local static
...
variable in a local function. Fixes pr7101.
llvm-svn: 104743
2010-05-26 21:45:50 +00:00
Ted Kremenek
34ddec630c
Predefine the '__clang_analyzer__' macro when using '-analyze'.
...
llvm-svn: 104742
2010-05-26 21:36:54 +00:00
Fariborz Jahanian
b0e28471a6
Improve on flexible array diagnostics (PR7029).
...
llvm-svn: 104739
2010-05-26 20:46:24 +00:00
Fariborz Jahanian
1138ba6693
Fixes misc. flexible array bugs in c++ (PR7029).
...
llvm-svn: 104733
2010-05-26 20:19:07 +00:00
Charles Davis
c9e78145b0
Extract the ObjC and blocks manglers into their own class. No functionality
...
change.
llvm-svn: 104715
2010-05-26 18:25:27 +00:00
Abramo Bagnara
341d783488
Added source order to CXXBaseOrMemberInitializer.
...
llvm-svn: 104712
2010-05-26 18:09:23 +00:00
Anders Carlsson
c5ca1f7799
Move ComputeEmptySubobjectSizes to EmptySubobjectMap.
...
llvm-svn: 104702
2010-05-26 15:54:25 +00:00
Anders Carlsson
f58de11b61
Stub out the EmptySubobjectsMap class.
...
llvm-svn: 104701
2010-05-26 15:32:58 +00:00
Anders Carlsson
ce7f77729a
Inline the RecordLayoutBuilder constructor.
...
llvm-svn: 104700
2010-05-26 15:20:08 +00:00
Anders Carlsson
c28a6c9251
Add a Layout overload that takes a CXXRecordDecl.
...
llvm-svn: 104695
2010-05-26 15:10:00 +00:00
Benjamin Kramer
c7656cdf83
Move RecordLayoutBuilder into an anonymous namespace.
...
llvm-svn: 104693
2010-05-26 09:58:31 +00:00
Douglas Gregor
1b30b3c9fa
When transforming a C++ "new" expression's constructor arguments, drop
...
any arguments that are default-argument expressions. The can show up
when we have a new expression whose constructor arguments are not
type-dependent and whose allocated type is not dependent and has a
constructor with default arguments. Fixes PR7202.
llvm-svn: 104690
2010-05-26 07:10:06 +00:00
Anders Carlsson
c222620adf
Rename ASTRecordLayoutBuilder to RecordLayoutBuilder.
...
llvm-svn: 104688
2010-05-26 05:58:59 +00:00
Anders Carlsson
b47c482cf0
Remove RecordLayoutBuilder.h
...
llvm-svn: 104687
2010-05-26 05:49:19 +00:00
Anders Carlsson
35a36eb78d
Move the ASTRecordLayoutBuilder class declaration into the .cpp file.
...
llvm-svn: 104686
2010-05-26 05:41:04 +00:00
Douglas Gregor
9af03022ff
Tell the string literal parser when it's not permitted to emit
...
diagnostics. That would be while we're parsing string literals for the
sole purpose of producing a diagnostic about them. Fixes
<rdar://problem/8026030>.
llvm-svn: 104684
2010-05-26 05:35:51 +00:00
Anders Carlsson
b48414f4cb
Fix thinko and remove another unused function.
...
llvm-svn: 104683
2010-05-26 05:31:23 +00:00
Anders Carlsson
1d1e4cf04d
Fix build.
...
llvm-svn: 104682
2010-05-26 05:25:15 +00:00
Anders Carlsson
d20e7cd3c6
No need to use the PrimaryBaseInfo struct in the builder.
...
llvm-svn: 104681
2010-05-26 05:20:58 +00:00
Douglas Gregor
0094eb26fc
Be sure to use the standard substitutions when mangling the names of
...
vtables, VTTs, and construction vtables. Fixes PR7201.
llvm-svn: 104675
2010-05-26 05:11:13 +00:00
Anders Carlsson
87209bb54b
Remove FIXME.
...
llvm-svn: 104674
2010-05-26 05:11:02 +00:00
Anders Carlsson
d295486012
Fold the other Layout overload into its sole call site.
...
llvm-svn: 104673
2010-05-26 05:10:47 +00:00
Anders Carlsson
6ed3a9a494
Fold the ASTRecordLayoutBuilder::ComputeLayout overload that takes an ObjCInterfaceDecl pointer into its only callsite.
...
llvm-svn: 104672
2010-05-26 05:04:25 +00:00
Anders Carlsson
df291d8d8b
Move the relevant ASTContext member functions that deal with ASTRecordLayoutBuilder into RecordLayoutBuilder.cpp. This matches the way we interact with other builder classes (CGRecordLayoutBuilder, VTableBuilder and VTTBuilder) and it also allows for making ASTRecordLayoutBuilder a private class without a header file.
...
llvm-svn: 104671
2010-05-26 04:56:53 +00:00
Zhongxing Xu
eb4fc4a64c
Small fix.
...
llvm-svn: 104669
2010-05-26 03:36:08 +00:00
Zhongxing Xu
d4f1294f1e
Remove extents of dead symbolic regions when RemoveDeadBindings.
...
This requires creating new persistent states due to the nature of GDM.
llvm-svn: 104668
2010-05-26 03:27:35 +00:00
Douglas Gregor
f64acca2f5
Only enable code patterns (e.g., try { statements } catch (...) {
...
statements }) in the code-completion results if explicitly requested.
llvm-svn: 104637
2010-05-25 21:41:55 +00:00
Ted Kremenek
f5bcc6a285
Allocate the contents of TemplateArgumentList using ASTContext's allocator. This fixes
...
a massive memory leak when using a BumpPtrAllocator in ASTContext.
Added a FIXME, as the Destroy method for TemplateArgumentList isn't getting called.
This means we will instead leak when using the MallocAllocator.
llvm-svn: 104633
2010-05-25 20:43:29 +00:00
Charles Davis
4e786ddccb
IRgen: Add a stub class for generating ABI-specific C++ code.
...
This class only supports name mangling (which is apparently used during C/ObjC
codegen). For now only the Itanium C++ ABI is supported. Patches to add a
second C++ ABI are forthcoming.
llvm-svn: 104630
2010-05-25 19:52:27 +00:00
Daniel Dunbar
4c77a64391
Driver/Frontend: Add -emit-codegen-only, for running irgen + codegen but not the
...
.s printer or .o writer.
llvm-svn: 104623
2010-05-25 18:41:01 +00:00
Chris Lattner
edde8a99df
make -ast-dump print something like this for declstmts:
...
(DeclStmt 0x3405550 <line:3:4, col:11>
0x34053a0 "int x")
instead of:
(DeclStmt 0x3405550 <line:3:4, col:11>
0x34053a0 "int x"
which has unbalanced parens (PR7228)
llvm-svn: 104620
2010-05-25 17:56:43 +00:00
Fariborz Jahanian
31b8a9d83f
Refactoring of block-pointer type rewrite.
...
llvm-svn: 104614
2010-05-25 17:12:52 +00:00
Douglas Gregor
02df9da2ac
Fix compilation failure
...
llvm-svn: 104613
2010-05-25 17:12:30 +00:00
Douglas Gregor
7e10f3699a
Improve name mangling for blocks and support mangling of static local
...
variables within blocks. We loosely follow GCC's mangling, but since
these are always internal symbols the names don't really matter. I
intend to revisit block mangling later, because GCC's mangling is
rather verbose. <rdar://problem/8015719>.
llvm-svn: 104610
2010-05-25 17:04:15 +00:00
Fariborz Jahanian
19c6240713
Patch to rewrite block pointers as arguments to
...
methods. (Radar 7987817).
llvm-svn: 104608
2010-05-25 15:56:08 +00:00
Douglas Gregor
b9f907bafc
Make sure to strip off top-level cv-qualifiers as part of a
...
derived-to-base conversion on a pointer. Fixes PR7224.
llvm-svn: 104607
2010-05-25 15:31:05 +00:00
Douglas Gregor
6da3db4af3
Improve code completion in failure cases in two ways:
...
1) Suppress diagnostics as soon as we form the code-completion
token, so we don't get any error/warning spew from the early
end-of-file.
2) If we consume a code-completion token when we weren't expecting
one, go into a code-completion recovery path that produces the best
results it can based on the context that the parser is in.
llvm-svn: 104585
2010-05-25 05:58:43 +00:00
Zhongxing Xu
658dd8b176
CastSizeChecker checks when casting a malloc'ed symbolic region to type T,
...
whether the size of the symbolic region is a multiple of the size of T.
Fixes PR6123 and PR7217.
llvm-svn: 104584
2010-05-25 04:59:19 +00:00
John McCall
7cb0220e53
If a function definition has any sort of weak linkage, its static local
...
variables should have that linkage. Otherwise, its static local
variables should have internal linkage. To avoid computing this excessively,
set a function's linkage before we emit code for it.
Previously we were assigning weak linkage to the static variables of
static inline functions in C++, with predictably terrible results. This
fixes that and also gives better linkage than 'weak' when merging is required.
llvm-svn: 104581
2010-05-25 04:30:21 +00:00
Daniel Dunbar
532177685a
IRgen/C++: When mark vtables used, make sure to still append to the VTableUse array if we promote a vtable from being just used to having its definition required. This ensures that we properly inform the consumer about whether the vtable is required or not, previously we could fail to do so when the vtable was in the VTableUses array before the decl which marked it as required.
...
- I think this can be cleaned up, since this means we may notify the consumer about the vtable twice, but I didn't see an easy fix for this without more substantial refactoring.
- Doug, please review!
llvm-svn: 104577
2010-05-25 00:33:13 +00:00
Daniel Dunbar
105ce6db87
Simplify.
...
llvm-svn: 104576
2010-05-25 00:32:58 +00:00
Chris Lattner
fb58515bc3
improve the fixit for the missing : error when parsing ?:. When
...
there are already two spaces before the token where the : was expected,
put the : in between the spaces. This means we get it right in both
of these cases:
t.c:2:17: error: expected ':'
return a ? b c;
^
:
t.c:3:16: error: expected ':'
return a ? b c;
^
:
In the later case, the diagnostic says to insert ": ", in the former
case it says to insert ":" between the spaces. This fixes rdar://8007231
llvm-svn: 104569
2010-05-24 22:31:37 +00:00
Douglas Gregor
9a414458ff
Don't complain about VLAs of non-POD types when the array type is
...
dependent. Fixes <rdar://problem/8021385>.
llvm-svn: 104550
2010-05-24 20:42:30 +00:00
Douglas Gregor
e05d3cb770
A type- or value-dependent expression cannot use bitfield
...
promotion. Fixes <rdar://problem/8020920>.
llvm-svn: 104545
2010-05-24 20:13:53 +00:00
Chris Lattner
787aef9aed
when too many errors are emitted, and we produce:
...
fatal error: too many errors emitted, stopping now [-ferror-limit=]
Tell the user that this is controlled with -ferror-limit=, like above.
llvm-svn: 104528
2010-05-24 18:37:03 +00:00
Fariborz Jahanian
36680dd751
Fix a rewriting bug where a local static objective-c
...
pointer is copied into a block. Fixes radar 7924024.
llvm-svn: 104526
2010-05-24 18:32:56 +00:00
Fariborz Jahanian
427ee8b5f3
Fix an objective-c rewriter bug when pre-processed file's
...
class declaration's @end is not followed by a new-line.
(radar 7946975).
llvm-svn: 104512
2010-05-24 17:22:38 +00:00
Douglas Gregor
5a5073e4d6
Make sure that we instantiate variably modified types, even if they
...
aren't dependent. Fixes <rdar://problem/8020206>.
llvm-svn: 104511
2010-05-24 17:22:01 +00:00
Douglas Gregor
bb3348ed33
Downgrade deletion of a void* from an error (which is should be) to an
...
extension warning (which other compilers seem to use). Works around a
known bug in Xalan.
llvm-svn: 104509
2010-05-24 17:01:56 +00:00
Douglas Gregor
e87561aa2e
An identity conversion is better than any non-identity
...
conversion. Fixes PR7095.
llvm-svn: 104476
2010-05-23 22:10:15 +00:00
Douglas Gregor
bea453a0fc
In C++, one cannot assign from an arithmetic type to an enumeration
...
type. Fixes PR7051.
llvm-svn: 104475
2010-05-23 21:53:47 +00:00
Benjamin Kramer
dc99965343
Add a comment for r104472.
...
llvm-svn: 104473
2010-05-23 20:57:46 +00:00
Benjamin Kramer
11d4d9ec4e
PR5863: Don't erase unreachable BBs which have an associated cleanup size.
...
This works around a crash where malloc reused the memory of an erased BB for a
new BB leaving old cleanup information pointing at the new block.
llvm-svn: 104472
2010-05-23 20:00:44 +00:00
Douglas Gregor
a09387df9f
It turns out that people love using VLAs in templates, too. Weaken our
...
VLA restrictions so that one can use VLAs in templates (even
accidentally), but not as part of a non-type template parameter (which
would be very bad).
llvm-svn: 104471
2010-05-23 19:57:01 +00:00
Douglas Gregor
2788782164
Complain about sizeof(overloaded function) rather than crashing.
...
llvm-svn: 104470
2010-05-23 19:43:23 +00:00
Douglas Gregor
c69978f766
Move OverloadExpr over to a ASTContext-allocated pointer for its
...
storage, rather than an UnresolvedSet.
llvm-svn: 104469
2010-05-23 19:36:40 +00:00
Douglas Gregor
30a4f4c757
Provide the overloaded functions for UnresolvedLookupExpr and
...
UnresolvedMemberExpr in their constructors, rather than adding them
after the fact. No functionality change.
llvm-svn: 104468
2010-05-23 18:57:34 +00:00
Douglas Gregor
1a80933d24
Keep track of all of the class and function template's "common"
...
pointers in the ASTContext, so that the folding sets stored inside
them will be deallocated when the ASTContext is destroyed (under
-disable-free). <rdar://problem/7998824>.
llvm-svn: 104465
2010-05-23 18:26:36 +00:00
Anders Carlsson
5773205a8d
When recording empty subobjects we should always look at the primary virtual base.
...
llvm-svn: 104464
2010-05-23 18:14:24 +00:00
Douglas Gregor
5e8c8c0e12
Even though we don't unique VLA types, we still need to build a
...
canonical type where the element type is canonical. Fixes PR7206.
llvm-svn: 104461
2010-05-23 16:10:32 +00:00
John McCall
cc04e9f6b9
Re-teach IR gen to perform GC moves on rvalues resulting from various ObjC
...
expressions. Essentially, GC breaks a certain form of the return-value
optimization.
llvm-svn: 104454
2010-05-22 22:13:32 +00:00
Anders Carlsson
5b94443b16
Really fix PR7139. There was one boost test that we still failed, and my first fix broke self-host.
...
llvm-svn: 104447
2010-05-22 17:45:10 +00:00
Anders Carlsson
c0964b60e5
Re-land the fix for PR7139.
...
llvm-svn: 104446
2010-05-22 17:35:42 +00:00
Douglas Gregor
024d80e571
Don't look for a destructor in a dependent type. Fixes PR7198.
...
llvm-svn: 104445
2010-05-22 17:12:29 +00:00
Douglas Gregor
0c6f539564
When determining whether we can use "this", make sure to look through
...
enum contexts (along with block contexts, which we already did). Fixes
PR7196.
llvm-svn: 104444
2010-05-22 16:25:05 +00:00
Douglas Gregor
959d5a0cbd
Implement support for variable length arrays in C++. VLAs are limited
...
in several important ways:
- VLAs of non-POD types are not permitted.
- VLAs cannot be used in conjunction with C++ templates.
These restrictions are intended to keep VLAs out of the parts of the
C++ type system where they cause the most trouble. Fixes PR5678 and
<rdar://problem/8013618>.
llvm-svn: 104443
2010-05-22 16:17:30 +00:00
Douglas Gregor
aae38d6610
Improve our handling of reference binding for subobjects of
...
temporaries. There are actually several interrelated fixes here:
- When converting an object to a base class, it's only an lvalue
cast when the original object was an lvalue and we aren't casting
pointer-to-derived to pointer-to-base. Previously, we were
misclassifying derived-to-base casts of class rvalues as lvalues,
causing various oddities (including problems with reference binding
not extending the lifetimes of some temporaries).
- Teach the code for emitting a reference binding how to look
through no-op casts and parentheses directly, since
Expr::IgnoreParenNoOpCasts is just plain wrong for this. Also, make
sure that we properly look through multiple levels of indirection
from the temporary object, but destroy the actual temporary object;
this fixes the reference-binding issue mentioned above.
- Teach Objective-C message sends to bind the result as a temporary
when needed. This is actually John's change, but it triggered the
reference-binding problem above, so it's included here. Now John
can actually test his return-slot improvements.
llvm-svn: 104434
2010-05-22 05:17:18 +00:00
Daniel Dunbar
bd3b1d40da
Attempt to make MSVC happy.
...
llvm-svn: 104432
2010-05-22 05:05:12 +00:00
Chandler Carruth
e039148801
Daniel re-educated me about what Alias does and does not do. Turn that off for
...
'-fasm' and explicitly map from that flag to -fgnu-keywords in the driver. Turn
off the driver in the lexer test for this madness and add a test to the driver
that the translation actually works.
llvm-svn: 104428
2010-05-22 02:21:53 +00:00
John McCall
78a151138a
Push a return-value slot throughout ObjC message-send codegen. Will be
...
critical for ObjC++ correctness; hard to test independently of various
required Sema changes, though.
llvm-svn: 104422
2010-05-22 01:48:05 +00:00
Daniel Dunbar
07494795e5
Driver: When printing a "command was signalled" type of diagnostic, use the
...
short name of the tool in use, instead of the name of the action that created
the command. The practical impact is we now get:
clang: error: clang frontend command failed due to signal 6 (use -v to see invocation)
instead of:
clang: error: assembler command failed due to signal 6 (use -v to see invocation)
when clang crashes on a job that uses the integrated assembler.
llvm-svn: 104417
2010-05-22 00:37:20 +00:00
Daniel Dunbar
1cb532ca28
Driver: Add Tool::ShortName, intended to be a human readable name for the tool.
...
llvm-svn: 104416
2010-05-22 00:37:18 +00:00
Douglas Gregor
20c38a7c58
Improve recovery when we see a dependent template name that is missing
...
the required "template" keyword, using the same heuristics we do for
dependent template names in member access expressions, e.g.,
test/SemaTemplate/dependent-template-recover.cpp:11:8: error: use 'template'
keyword to treat 'getAs' as a dependent template name
T::getAs<U>();
^
template
Fixes PR5404.
llvm-svn: 104409
2010-05-21 23:43:39 +00:00
Fariborz Jahanian
5981b04718
Clang missing warning about conflicting declaration vs. definition
...
for variable arguments list methods. (radar 8006060).
llvm-svn: 104407
2010-05-21 23:28:58 +00:00
Douglas Gregor
786123dc48
Improve parser recovery when we encounter a dependent template name
...
that is missing the 'template' keyword, e.g.,
t->getAs<T>()
where getAs is a member of an unknown specialization. C++ requires
that we treat "getAs" as a value, but that would fail to parse since T
is the name of a type. We would then fail at the '>', since a type
cannot be followed by a '>'.
This is a very common error for C++ programmers to make, especially
since GCC occasionally allows it when it shouldn't (as does Visual
C++). So, when we are in this case, we use tentative parsing to see if
the tokens starting at "<" can only be parsed as a template argument
list. If so, we produce a diagnostic with a fix-it that states that
the 'template' keyword is needed:
test/SemaTemplate/dependent-template-recover.cpp:5:8: error: 'template' keyword
is required to treat 'getAs' as a dependent template name
t->getAs<T>();
^
template
This is just a start of this patch; I'd like to apply the same
approach to everywhere that a template-id with dependent template name
can be parsed.
llvm-svn: 104406
2010-05-21 23:18:07 +00:00
Anders Carlsson
c866eb5ba9
Unbreak self-host.
...
llvm-svn: 104390
2010-05-21 22:17:48 +00:00
Ted Kremenek
a2448b85be
Update retain-release checker to understand changes to how 'super' is represented
...
in the ASTs. Fixes <rdar://problem/8015556>.
llvm-svn: 104389
2010-05-21 21:57:00 +00:00
Ted Kremenek
5f03be9704
Pass around an error SourceRange instead of an Expr* when reporting errors
...
in the Objective-C memory checker.
llvm-svn: 104388
2010-05-21 21:56:53 +00:00
Anders Carlsson
da1641cd12
Rename CodeGenFunction::EmitMemSetToZero to EmitNullInitialization. Handle setting null data member pointers correctly. Fixes PR7139.
...
llvm-svn: 104387
2010-05-21 21:45:41 +00:00
Douglas Gregor
9f44d1453b
When instantiating a function declaration within a function template,
...
be sure to merge its parameter scope with its parent's scope. Fixes
PR7184.
llvm-svn: 104386
2010-05-21 21:25:08 +00:00