Anders Carlsson
7a8a74f704
Handle mangling of TemplateSpecializationType.
...
llvm-svn: 82189
2009-09-18 02:42:01 +00:00
Fariborz Jahanian
2e32ddc7ba
Fixed a bug in generation of the new write-barriers when
...
array syntax is used to derefernce and assign to ivar pointee.
llvm-svn: 82183
2009-09-18 00:04:00 +00:00
Douglas Gregor
2436e7116b
Initial implementation of a code-completion interface in Clang. In
...
essence, code completion is triggered by a magic "code completion"
token produced by the lexer [*], which the parser recognizes at
certain points in the grammar. The parser then calls into the Action
object with the appropriate CodeCompletionXXX action.
Sema implements the CodeCompletionXXX callbacks by performing minimal
translation, then forwarding them to a CodeCompletionConsumer
subclass, which uses the results of semantic analysis to provide
code-completion results. At present, only a single, "printing" code
completion consumer is available, for regression testing and
debugging. However, the design is meant to permit other
code-completion consumers.
This initial commit contains two code-completion actions: one for
member access, e.g., "x." or "p->", and one for
nested-name-specifiers, e.g., "std::". More code-completion actions
will follow, along with improved gathering of code-completion results
for the various contexts.
[*] In the current -code-completion-dump testing/debugging mode, the
file is truncated at the completion point and EOF is translated into
"code completion".
llvm-svn: 82166
2009-09-17 21:32:03 +00:00
Mike Stump
faacf018a3
Fix typo.
...
llvm-svn: 82164
2009-09-17 21:15:00 +00:00
Douglas Gregor
4f15f4dec1
Merge uninstantiated default arguments more carefully, and try not to
...
complain about specializations of member functions that are not
definitions. Fixes PR4995.
llvm-svn: 82159
2009-09-17 19:51:30 +00:00
Daniel Dunbar
2f5c75e17d
ARM: Incremental improvement to preprocessor defines.
...
- Based on patch by Shantonu.
llvm-svn: 82147
2009-09-17 16:21:10 +00:00
Anders Carlsson
ca51ef156b
Ignore extern "C++" { } when mangling.
...
llvm-svn: 82146
2009-09-17 16:12:20 +00:00
Daniel Dunbar
1da76c4e58
Add ARM register names and aliases.
...
- Patch by Shantonu Sen!
<rdar://problem/6922650> clang doesn't know about ARM registers for inline asm clobber lists
llvm-svn: 82132
2009-09-17 07:03:19 +00:00
Daniel Dunbar
58f7833cfb
Driver: Change -O to mean -O2, -O1 is meaningless.
...
llvm-svn: 82131
2009-09-17 06:53:36 +00:00
Daniel Dunbar
687fa86a30
Fix two crashes on value dependent expressions (shift and null-pointer check).
...
- Doug, please check.
- PR4940.
llvm-svn: 82129
2009-09-17 06:31:27 +00:00
Daniel Dunbar
4782a6ead5
Remove trailing whitespace.
...
llvm-svn: 82128
2009-09-17 06:31:17 +00:00
Anders Carlsson
f96da57adb
Revert r82123 for now.
...
llvm-svn: 82125
2009-09-17 05:31:47 +00:00
Anders Carlsson
93b6d5e85e
Temporary band-aid for handling empty classes somewhat better.
...
llvm-svn: 82124
2009-09-17 04:42:56 +00:00
Anders Carlsson
49fe8b4f97
Treat an unqualified RecordType as a RecordDecl when substituting.
...
llvm-svn: 82123
2009-09-17 04:38:23 +00:00
Anders Carlsson
4245bf9e13
Substitution for prefixes.
...
llvm-svn: 82122
2009-09-17 04:16:28 +00:00
Daniel Dunbar
07806ca7ab
Improve driver error message when only running the preprocessor and an input is
...
already preprocessed.
--
ddunbar@giles:tmp$ touch t.i
ddunbar@giles:tmp$ gcc -E t.i
ddunbar@giles:tmp$ clang -E t.i
clang: warning: t.i: previously preprocessed input unused when '-E' is present
ddunbar@giles:tmp$
--
<rdar://problem/6813375> [driver] driver prints confusing message when running -E on preprocessed file
llvm-svn: 82120
2009-09-17 04:13:26 +00:00
Anders Carlsson
a2fb9bcd19
Substitute unscoped template names.
...
llvm-svn: 82119
2009-09-17 04:02:31 +00:00
Daniel Dunbar
df0e62d0a1
IRgen/ObjC: Correctly construct the function info for variadic message sends.
...
This fixes some bad -O0 codegen and the unnecessary clearing of al on entry to objc_msgSend for most message sends.
<rdar://problem/7102824> [irgen] unnecessary xorb on calls to objc_msgSend on x86_64
llvm-svn: 82118
2009-09-17 04:01:40 +00:00
Daniel Dunbar
aff9fcaa02
IRgen/ObjC: Make the target method decl available to GenerateMessageSendSuper.
...
llvm-svn: 82117
2009-09-17 04:01:22 +00:00
Anders Carlsson
a96f56fba8
Add mangleSubstitution/addSubstitution variants that take a NamedDecl.
...
llvm-svn: 82116
2009-09-17 03:53:28 +00:00
Anders Carlsson
df644fb773
When mangling function template specialization, mangle the type encoding of the original function template. Also, port mangle.cpp and function-template-specialization.cpp over to using FileCheck.
...
llvm-svn: 82114
2009-09-17 03:46:43 +00:00
Anders Carlsson
98e00bb162
Add new functions to the mangler for the <unscoped-name> and <unscoped-template-name> productions.
...
llvm-svn: 82113
2009-09-17 03:17:01 +00:00
Daniel Dunbar
5bb5ec5b07
PCH: When writing PCH files, tweak the predicate function deciding whether to mark a decl as "external" to be closer to reality.
...
This still isn't perfect, but I believe it is conservatively accurate at marking decls which IRgen needs to see, while still keeping the "deserialization footprint" on Cocoa.h.
llvm-svn: 82112
2009-09-17 03:06:51 +00:00
Daniel Dunbar
865c2a7f23
PCH: When deserializing an explicit "external definition", don't pass it to HandleTopLevelDecl -- this is already being done inside the reader.
...
This is something of a hack, since whether the reader actually did this depends on the "isConsumerInterestedIn" predicate. I think we need to rework how this works, but I need to discuss with Doug.
llvm-svn: 82111
2009-09-17 03:06:44 +00:00
Daniel Dunbar
d112f103e7
We don't need a -compile-ast clang-cc action, we can just use -S.
...
llvm-svn: 82105
2009-09-17 00:47:53 +00:00
Anders Carlsson
feb60501a8
Add basic substitution to the C++ mangler. It currently only looks at types.
...
llvm-svn: 82102
2009-09-17 00:43:46 +00:00
Anders Carlsson
e7e163cc0b
When creating function types, remove any top-level CVR qualifications in the function type argument types.
...
llvm-svn: 82093
2009-09-16 23:47:08 +00:00
Fariborz Jahanian
de1d324dce
patch for generating objc'2 objc_assign_ivar. WIP.
...
llvm-svn: 82090
2009-09-16 23:11:23 +00:00
John McCall
11083da4d0
Improved representation and support for friend class templates. Angst about same.
...
llvm-svn: 82088
2009-09-16 22:47:08 +00:00
Fariborz Jahanian
a7fa6beb2e
Starting patch to generate more specific API for objc's
...
GC. Currently, new API will be generated under
clang-cc's -fobjc-newgc-api flag which will eventually
become the default. WIP.
llvm-svn: 82082
2009-09-16 21:37:16 +00:00
Mike Stump
d611ebaa5e
Fix spelling.
...
llvm-svn: 82078
2009-09-16 20:41:09 +00:00
Anders Carlsson
570af5d426
Improve handling of vector casts in C++.
...
llvm-svn: 82072
2009-09-16 19:19:43 +00:00
Douglas Gregor
64621e6eb3
Teach Sema::FindInstantiatedDecl to find instantiated RecordDecls even
...
when we are not instantiating the corresponding "current
instantiation." This happens, e.g., when we are instantiating a
declaration reference that refers into the "current instantiation" but
occurs in a default function argument. The libstdc++ vector default
constructor now instantiates properly.
llvm-svn: 82069
2009-09-16 18:34:49 +00:00
Fariborz Jahanian
cceedbff27
Do not generate write-barrier in indirect assignment to
...
a weak object.
llvm-svn: 82061
2009-09-16 18:09:18 +00:00
Fariborz Jahanian
4141deb68e
Removed a superfluous check before setting
...
a flag (objc GC).
llvm-svn: 82052
2009-09-16 16:49:08 +00:00
Anders Carlsson
20759ad54c
x86-64 ABI: If a type is a C++ record with either a non-trivial destructor or a non-trivial copy constructor, it should be passed in a pointer. Daniel, plz review.
...
llvm-svn: 82050
2009-09-16 15:53:40 +00:00
Benjamin Kramer
26ddfee3b2
PR4991: Properly remove trailing newline from __TIMESTAMP__.
...
Replace strcpy with memcpy while at it.
llvm-svn: 82043
2009-09-16 13:10:04 +00:00
Daniel Dunbar
306945d3d0
Incremental improvement to logic determining whether we emit unwind tables or
...
not.
- PR4932.
llvm-svn: 82021
2009-09-16 06:17:29 +00:00
Ted Kremenek
4f335c300a
Have divide-by-zero checker not handled undefined denominators. This is handled by the generic checking for undefined operands for BinaryOperators.
...
llvm-svn: 82019
2009-09-16 06:04:26 +00:00
Ted Kremenek
6879beda08
Remove ImplicitBadDivides/ExplicitBadDivides node sets. This checking is now down by a 'Checker' and not build into GRExprEngine.
...
llvm-svn: 82017
2009-09-16 06:03:39 +00:00
Chris Lattner
f7ff53d4d9
fix some ppc register name issues, patch by Richard Pennington!
...
llvm-svn: 82009
2009-09-16 05:05:27 +00:00
Mike Stump
b4bed3a497
Collapse more clang version numbers down into fewer places.
...
llvm-svn: 81983
2009-09-16 01:26:05 +00:00
Douglas Gregor
82e22869aa
Fix a typo in a FIXME
...
llvm-svn: 81960
2009-09-16 00:01:48 +00:00
Mike Stump
e18856dad1
Back to 1.1 we go.
...
llvm-svn: 81944
2009-09-15 23:04:22 +00:00
Fariborz Jahanian
a9c4041471
In building list of visible conversion functions, use
...
result type of template convesion functions.
llvm-svn: 81943
2009-09-15 23:02:16 +00:00
Douglas Gregor
87f5406081
When implicitly declaring operators new, new[], delete, and delete[],
...
give them the appropriate exception specifications. This,
unfortunately, requires us to maintain and/or implicitly generate
handles to namespace "std" and the class "std::bad_alloc". However,
every other approach I've come up with was more hackish, and this
standard requirement itself is quite the hack.
Fixes PR4829.
llvm-svn: 81939
2009-09-15 22:30:29 +00:00
Fariborz Jahanian
adcea10410
1) don't do overload resolution in selecting conversion
...
to pointer function for delete expression. 2)
Treat type conversion function and its 'const' version
as identical in building the visible conversion list.
llvm-svn: 81930
2009-09-15 22:15:23 +00:00
Mike Stump
c3844bea75
Be sure to use the correct version instead of inventing the wrong one.
...
llvm-svn: 81924
2009-09-15 21:48:34 +00:00
Anders Carlsson
c8bfc466f3
Add back the workaround since it lead to constructor conversion bugs :(
...
llvm-svn: 81917
2009-09-15 21:14:33 +00:00
Douglas Gregor
f70b2b4f38
Make sure we're comparing the canonical types when we determine
...
whether a constructor is a copy constructor.
Sadly, I wasn't able to get down to a test case smaller than libstdc++'s
<string>.
llvm-svn: 81913
2009-09-15 20:50:23 +00:00
Douglas Gregor
4fb9cde8ef
When printing an overload candidate that is a function template specialization,
...
point at the template and print out its template arguments, e.g.,
ambiguous-ovl-print.cpp:5:8: note: candidate function template specialization
[with T = int]
void f(T*, long);
llvm-svn: 81907
2009-09-15 20:11:42 +00:00
Fariborz Jahanian
3e6b57e593
Issue good diagnostics when initialization failes due to
...
ambiguity in type conversion function selection.
llvm-svn: 81898
2009-09-15 19:12:21 +00:00
Douglas Gregor
31fae89497
Add an assertion and a test case, in a fruitless attempt to track down an existing bug
...
llvm-svn: 81885
2009-09-15 18:26:13 +00:00
Ted Kremenek
188f62f1cc
Fix static analyzer regression when emitting undefined value warnings
...
with binary operators. The result of a binary operator may be
undefined even if its operands are well-defined.
llvm-svn: 81874
2009-09-15 17:43:54 +00:00
Fariborz Jahanian
c34c179f4b
Perform overload resolution when selecting a pointer conversion
...
function for delete of a class expression and issue
good diagnostic when result is ambiguous.
llvm-svn: 81870
2009-09-15 17:21:47 +00:00
Douglas Gregor
00a511f0c1
Slightly improved template argument deduction for use in partial
...
ordering, along with another test case for partial ordering of partial
specializations.
llvm-svn: 81869
2009-09-15 16:51:42 +00:00
Anders Carlsson
1450adbbf9
Code generation of Conditional operators that are lvalues (but that aren't bitfields).
...
llvm-svn: 81867
2009-09-15 16:35:24 +00:00
Douglas Gregor
be999390eb
Implement partial ordering of class template partial specializations
...
(C++ [temp.class.order]).
llvm-svn: 81866
2009-09-15 16:23:51 +00:00
Anders Carlsson
01ccf998d5
Use getTrueExpr/getFalseExpr as suggested by Doug.
...
llvm-svn: 81863
2009-09-15 16:03:44 +00:00
Anders Carlsson
6b2737d591
If a conversion operator exists in a base class, make sure to cast the object to that base class.
...
llvm-svn: 81852
2009-09-15 07:42:44 +00:00
Anders Carlsson
110b07b848
When performing an user defined conversion sequence, perform the initial standard conversion sequence. This lets us remove a workaround in SemaCompleteConstructorCall.
...
llvm-svn: 81847
2009-09-15 06:28:28 +00:00
Anders Carlsson
611da28725
Revert for real.
...
llvm-svn: 81844
2009-09-15 05:49:31 +00:00
Anders Carlsson
e5506884cc
Whoops, didn't mean to commit this.
...
llvm-svn: 81842
2009-09-15 05:31:01 +00:00
Anders Carlsson
4e66cda3f7
Only reuse an already existing ImplicitCastExpr if the cast kinds are the same.
...
llvm-svn: 81841
2009-09-15 05:28:24 +00:00
Anders Carlsson
d3bc31f04f
Get rid of the CastInfo struct.
...
llvm-svn: 81839
2009-09-15 05:13:45 +00:00
Anders Carlsson
7cd39e0721
Handle reinterpret_cast between integral types and pointer types.
...
llvm-svn: 81837
2009-09-15 04:48:33 +00:00
Anders Carlsson
04c3bf4fab
Codegen support for nullptr from C++0x.
...
llvm-svn: 81835
2009-09-15 04:39:46 +00:00
Ted Kremenek
b66229464e
Per feedback from Eli, recognize in the transfer function logic for
...
__builtin_offsetof in the static analyzer that __builtin_offsetof is
not guaranteed to return an integer constant. We will need to shore
this up later, but now at least we have correct support for when this
*is* an integer constant.
llvm-svn: 81830
2009-09-15 04:19:09 +00:00
Ted Kremenek
3413f277d0
Fix typo in comment.
...
llvm-svn: 81825
2009-09-15 03:28:00 +00:00
Ted Kremenek
27347135dd
Add static analyzer transfer function support for __builtin_offsetof.
...
llvm-svn: 81820
2009-09-15 00:40:32 +00:00
Fariborz Jahanian
19c7328881
Issue a good diagnostics when attempt to select
...
a type convesion function results in ambiguity.
llvm-svn: 81812
2009-09-15 00:10:11 +00:00
Anders Carlsson
3fa58d1f63
Diagnose taking the address of a bit-field inside a conditional operator.
...
llvm-svn: 81808
2009-09-14 23:15:26 +00:00
Douglas Gregor
6010da024c
Implement partial ordering of function templates when calling a
...
conversion function.
llvm-svn: 81807
2009-09-14 23:02:14 +00:00
Douglas Gregor
48bc374d1e
Test function template partial ordering when resolving the address of
...
an overloaded function (template).
llvm-svn: 81804
2009-09-14 22:02:01 +00:00
Ted Kremenek
4112969df1
Fix: <rdar://problem/5905851> do not report a leak when post-dominated by a call
...
to a noreturn or panic function
llvm-svn: 81803
2009-09-14 22:01:32 +00:00
John McCall
27b5c253d8
Skeletal support for friend class templates.
...
llvm-svn: 81801
2009-09-14 21:59:20 +00:00
Daniel Dunbar
09d3362bf5
ARM/[A]APCS: Ignore empty records passed as arguments.
...
llvm-svn: 81798
2009-09-14 21:54:03 +00:00
Douglas Gregor
e1d2ef3508
Refactor MarkDeductedTemplateParameters into
...
MarkUsedTemplateParameters, which is able to mark template parameters
used within non-deduced contexts as well as deduced contexts. Use this
to finish the implementation of [temp.deduct.partial]p11.
llvm-svn: 81794
2009-09-14 21:25:05 +00:00
Fariborz Jahanian
f4061e39a3
Used visible conversion function api to do overload
...
resolution of type conversion functions in base and
current class.
llvm-svn: 81784
2009-09-14 20:41:01 +00:00
Ted Kremenek
37a118520c
Implement FIXME: free up BugReportEquivClass objects when deleting BugTypes.
...
llvm-svn: 81783
2009-09-14 20:40:59 +00:00
Sam Weinig
b7608d7064
-Wchar-subscripts should not warn for explicit signed char subscripts either. Another fix for PR4978.
...
llvm-svn: 81780
2009-09-14 20:14:57 +00:00
Douglas Gregor
406f634df5
Tighten up checking of non-dependent arguments as part of template
...
argument deduction. This fixes the new test case (since partial
ordering does not have a "verify the results of deduction" step), and
will allow failed template argument deductions to return more quickly
for, e.g., matching class template partial specializations.
llvm-svn: 81779
2009-09-14 20:00:47 +00:00
David Chisnall
2997982ab4
Small fix to stop CGObjCGNU emitting symbols that break some versions of gas.
...
llvm-svn: 81778
2009-09-14 19:04:10 +00:00
Douglas Gregor
0ff7d92048
Implement partial ordering of function template specializations
...
(C++ [temp.func.order]).
llvm-svn: 81777
2009-09-14 18:39:43 +00:00
Sam Weinig
80cf843fe9
-Wchar-subscripts should not warn for unsigned char subscripts. Fixes PR4978.
...
llvm-svn: 81776
2009-09-14 18:17:16 +00:00
Fariborz Jahanian
cb1c19147f
Using the property dot-syntax to invoke a non-eixsting
...
structure-valued setter should cause a user error instead of
crash.
llvm-svn: 81769
2009-09-14 16:40:48 +00:00
Anders Carlsson
ddf57d3df9
Remove an unnecessary FunctionDecl parameter to the synthesizing functions.
...
llvm-svn: 81759
2009-09-14 05:32:02 +00:00
Daniel Dunbar
ff0553ec61
Fix subtle bug in generating LLVM function declarations for builtin functions.
...
The decl wasn't being passed down, which meant that function attributes were not
being set correctly. This is particularly important for ARM, since it wants to
override the calling convention. Instead we would emit the builtin with the
wrong calling convention, and instcombine would come along and merrily shred all
the calls to it. :)
llvm-svn: 81756
2009-09-14 04:33:21 +00:00
Daniel Dunbar
d53bac7fa4
ARM/APCS: Don't treat structs w/ floating point types as "integer like".
...
llvm-svn: 81748
2009-09-14 02:20:34 +00:00
Sam Weinig
914244e7b0
Add support for -Wchar-subscripts. Fixes PR4801.
...
llvm-svn: 81747
2009-09-14 01:58:58 +00:00
Anders Carlsson
aedb46fe21
If a function call returns a reference, don't bind it to a temporary.
...
llvm-svn: 81743
2009-09-14 01:30:44 +00:00
Anders Carlsson
96bad9a5cd
Implement CodeGenFunction::EmitCXXExprWithTemporariesLValue.
...
llvm-svn: 81738
2009-09-14 01:10:45 +00:00
Daniel Dunbar
1ce7251a0a
Some minor clang/ARM/AAPCS tweaks.
...
llvm-svn: 81737
2009-09-14 00:56:55 +00:00
Daniel Dunbar
b4091a9c6a
Add TargetInfo::getABI(), and base ARM APCS vs AAPCS choice on that.
...
llvm-svn: 81735
2009-09-14 00:35:03 +00:00
Daniel Dunbar
4ed7898294
Support -mabi= for clang/ARM.
...
llvm-svn: 81734
2009-09-14 00:34:46 +00:00
Anders Carlsson
8783737029
Handle delete where the class has a virtual destructor.
...
llvm-svn: 81733
2009-09-14 00:16:25 +00:00
Daniel Dunbar
125f8fb761
ARM target tweaks.
...
- Change TargetData string to match llvm-gcc.
- Some -target-abi support for 'apcs-gnu', most importantly the alignment of double and long long changes.
llvm-svn: 81732
2009-09-14 00:02:24 +00:00
Anders Carlsson
1b12ed4a00
Perform the C++ specific semantic checks of a function declaration after it's been merged with the previous declaration. This ensures that getPreviousDecl() will have the right value when ActOnConversionDeclarator is called.
...
llvm-svn: 81720
2009-09-13 21:33:06 +00:00
Anders Carlsson
ccbabc9645
Fix another byref bug. This should hopefully get QuickLookPlugins building successfully.
...
llvm-svn: 81681
2009-09-13 17:55:13 +00:00
Eli Friedman
7d45c4884a
Add utility to evaluate lvalues which are an offset relative to a stack
...
location. Patch by Enea Zaffanella.
llvm-svn: 81672
2009-09-13 10:17:44 +00:00