| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
Update testcases after LLVM change r243774.
Most of these had no need to check `tag:` field, but did so as a way of
getting to the `name:` field. In a few cases I've converted the `tag:`
checks to `arg:` or `CHECK-NOT: arg:`.
llvm-svn: 243775
|
| |
|
|
|
|
| |
Original patch [r240761] is missing all new files because of committer's mistake.
llvm-svn: 243018
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Currently, -save-temp will cause ObjCARC optimization to be dropped,
sanitizer pass to run early in the pipeline, and profiling
instrumentation to run twice.
Fix the issue by properly disable all passes in the optimization
pipeline when generating bitcode output and parse some of the Language
Options even when the input is bitcode so the passes can be setup
correctly.
llvm-svn: 242565
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When messaging a method that was defined in an Objective-C class (or
category or extension thereof) that has type parameters, substitute
the type arguments for those type parameters. Similarly, substitute
into property accesses, instance variables, and other references.
This includes general infrastructure for substituting the type
arguments associated with an ObjCObject(Pointer)Type into a type
referenced within a particular context, handling all of the
substitutions required to deal with (e.g.) inheritance involving
parameterized classes. In cases where no type arguments are available
(e.g., because we're messaging via some unspecialized type, id, etc.),
we substitute in the type bounds for the type parameters instead.
Example:
@interface NSSet<T : id<NSCopying>> : NSObject <NSCopying>
- (T)firstObject;
@end
void f(NSSet<NSString *> *stringSet, NSSet *anySet) {
[stringSet firstObject]; // produces NSString*
[anySet firstObject]; // produces id<NSCopying> (the bound)
}
When substituting for the type parameters given an unspecialized
context (i.e., no specific type arguments were given), substituting
the type bounds unconditionally produces type signatures that are too
strong compared to the pre-generics signatures. Instead, use the
following rule:
- In covariant positions, such as method return types, replace type
parameters with “id” or “Class” (the latter only when the type
parameter bound is “Class” or qualified class, e.g,
“Class<NSCopying>”)
- In other positions (e.g., parameter types), replace type
parameters with their type bounds.
- When a specialized Objective-C object or object pointer type
contains a type parameter in its type arguments (e.g.,
NSArray<T>*, but not NSArray<NSString *> *), replace the entire
object/object pointer type with its unspecialized version (e.g.,
NSArray *).
llvm-svn: 241543
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
cases
Several tests wouldn't pass when executed on an armv7a_pc_linux triple
due to the non-default arm_aapcs calling convention produced on the
function definitions in the IR output. Account for this with the
application of a little regex.
Patch by Ying Yi.
llvm-svn: 240971
|
| |
|
|
| |
llvm-svn: 239941
|
| |
|
|
|
|
|
|
| |
While the rest of the Objective-C metadata seems to honor
objc_runtime_name, the encoding strings produced by, e.g., @encode and
property meta, were not. Fixes rdar://problem/21408305.
llvm-svn: 239852
|
| |
|
|
| |
llvm-svn: 239848
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D9631
llvm-svn: 237463
|
| |
|
|
|
|
|
| |
details in http://reviews.llvm.org/D9483
goes with llvm checkin r237150
llvm-svn: 237151
|
| |
|
|
|
|
|
|
|
|
| |
LLVM r236120 renamed debug info IR constructs to use a `DI` prefix, now
that the `DIDescriptor` hierarchy has been gone for about a week. This
commit was generated using the rename-md-di-nodes.sh upgrade script
attached to PR23080, followed by running clang-format-diff.py on the
`lib/` portion of the patch.
llvm-svn: 236121
|
| |
|
|
|
|
| |
just a function type, not a pointer-to-function type
llvm-svn: 235756
|
| |
|
|
|
|
|
|
| |
This reverts commit r234700. It turns out that the lifetime markers
were not the cause of Chromium failing but a bug which was uncovered by
optimizations exposed by the markers.
llvm-svn: 235553
|
| |
|
|
|
|
| |
(migration for recent LLVM change to textual IR for calls)
llvm-svn: 235147
|
| |
|
|
|
|
|
| |
If the revert helps, I'll get a repro this Monday. Else I'll put the change
back in.
llvm-svn: 234700
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that TailRecursionElimination has been fixed with r222354, the
threshold on size for lifetime marker insertion can be removed. This
only affects named temporary though, as the patch for unnamed temporaries
is still in progress.
My previous commit (r222993) was not handling debuginfo correctly, but
this could only be seen with some asan tests. Basically, lifetime markers
are just instrumentation for the compiler's usage and should not affect
debug information; however, the cleanup infrastructure was assuming it
contained only destructors, i.e. actual code to be executed, and was
setting the breakpoint for the end of the function to the closing '}', and
not the return statement, in order to show some destructors have been
called when leaving the function. This is wrong when the cleanups are only
lifetime markers, and this is now fixed.
llvm-svn: 234581
|
| |
|
|
|
|
|
|
| |
of incorrect AST when a compound literal of Objective-C
property access is used to initialize a vertor of floats.
rdar://20407999
llvm-svn: 234176
|
| |
|
|
|
|
| |
Protocol objects in OBJC2. rdar://20286356
llvm-svn: 233766
|
| |
|
|
| |
llvm-svn: 232187
|
| |
|
|
|
|
|
| |
Update testcases for LLVM change in r231082 to use the new debug info
hierarchy.
llvm-svn: 231083
|
| |
|
|
| |
llvm-svn: 230795
|
| |
|
|
| |
llvm-svn: 230783
|
| |
|
|
|
|
| |
pointer migration
llvm-svn: 229271
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the function.
Now if you break on a dtor and go 'up' in your debugger (or you get an
asan failure in a dtor) during an exception unwind, you'll have more
context. Instead of all dtors appearing to be called from the '}' of the
function, they'll be attributed to the end of the scope of the variable,
the same as the non-exceptional dtor call.
This doesn't /quite/ remove all uses of CurEHLocation (which might be
nice to remove, for a few reasons) - it's still used to choose the
location for some other work in the landing pad. It'd be nice to
attribute that code to the same location as the exception calls within
the block and to remove CurEHLocation.
llvm-svn: 228181
|
| |
|
|
|
|
|
| |
Pipe the file into clang instead of passing the file path on the command
line.
llvm-svn: 227896
|
| |
|
|
|
|
| |
This fixes PR22437.
llvm-svn: 227843
|
| |
|
|
|
|
| |
Update testcases to match LLVM change in r226048.
llvm-svn: 226049
|
| |
|
|
|
|
| |
Match LLVM changes from r224257.
llvm-svn: 224259
|
| |
|
|
|
|
|
|
|
| |
is for each machine. Fix up darwin tests that were testing for
aapcs on armv7-ios when the actual ABI is apcs.
Should be no user visible change without -cc1.
llvm-svn: 223429
|
| |
|
|
|
|
| |
Revert r222993 while I investigate some MemorySanitizer failures.
llvm-svn: 222995
|
| |
|
|
|
|
|
|
|
| |
Now that TailRecursionElimination has been fixed with r222354, the
threshold on size for lifetime marker insertion can be removed. This
only affects named temporary though, as the patch for unnamed temporaries
is still in progress.
llvm-svn: 222993
|
| |
|
|
| |
llvm-svn: 222490
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When emitting nested block definitions, the insert-at-point variant of
DIBuilder::insertDeclare() could be called with the insertion point set
to the end-of-BasicBlock sentinel, causing the parent pointer of the
CallInst to be set to the intentionally bogus value of the sentinel.
Fixed by conditionally invoking the correct version of insertDeclare().
rdar://problem/19034882
llvm-svn: 222487
|
| |
|
|
|
|
| |
Simply marking the symbol private conveys the desire to hide them to LLVM.
llvm-svn: 221451
|
| |
|
|
| |
llvm-svn: 221435
|
| |
|
|
| |
llvm-svn: 221434
|
| |
|
|
|
|
|
|
| |
descriptor.
rdar://problem/15984431
llvm-svn: 221326
|
| |
|
|
| |
llvm-svn: 220812
|
| |
|
|
|
|
|
| |
I haven't done any actual impact analysis of this change as it's a
strict improvement, but I'd be curious to know how much it helps.
llvm-svn: 220408
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Mangling for blocks defined within blocks in an ObjectiveC context were also
broken by SVN r219393. Because the code in mangleName assumed that the code was
either C or C++, we would trigger assertions when trying to mangle the inner
blocks in an ObjectiveC context.
Add a test and use the ObjectiveC specific mangling when dealing with an
ObjectiveC method declaration.
llvm-svn: 219697
|
| |
|
|
|
|
| |
Revert this patch while I investigate some sanitizer failures off-line.
llvm-svn: 219307
|
| |
|
|
|
|
|
|
|
| |
Boostrapping LLVM+Clang+LLDB without threshold on object size for
lifetime markers insertion has shown there was no significant change
in compile time, so let the stack slot colorizer do its optimization
for all slots.
llvm-svn: 219303
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r218917, effectively reapplying r218913. Original
commit message follows.
--
Update debug info testcases for an LLVM metadata schema change to fold
metadata constant operands into a single `MDString`.
Part of PR17891.
llvm-svn: 219011
|
| |
|
|
|
|
| |
This reverts commit r218913 while I investigate some bots.
llvm-svn: 218917
|
| |
|
|
|
|
|
|
|
| |
Update debug info testcases for an LLVM metadata schema change to fold
metadata constant operands into a single `MDString`.
Part of PR17891.
llvm-svn: 218913
|
| |
|
|
|
|
|
|
|
|
| |
Complex address expressions are no longer part of DIVariable, but
rather an extra argument to the debug intrinsics.
http://reviews.llvm.org/D4919
rdar://problem/17994491
llvm-svn: 218788
|
| |
|
|
|
|
| |
"Update CGDebugInfo to the updated API in LLVM."
llvm-svn: 218781
|
| |
|
|
|
|
|
|
|
|
| |
Complex address expressions are no longer part of DIVariable, but
rather an extra argument to the debug intrinsics.
http://reviews.llvm.org/D4919
rdar://problem/17994491
llvm-svn: 218777
|
| |
|
|
| |
llvm-svn: 217704
|
| |
|
|
|
|
|
|
| |
from the default for the containing type.
rdar://problem/18154959
llvm-svn: 216800
|