<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 9, 2017, at 7:07 AM, Hal Finkel <<a href="mailto:hfinkel@anl.gov" class="">hfinkel@anl.gov</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" class="">
<div bgcolor="#FFFFFF" text="#000000" class=""><p class=""><br class="">
</p>
<div class="moz-cite-prefix">On 03/06/2017 04:48 PM, Adrian Prantl
via llvm-commits wrote:<br class="">
</div>
<blockquote cite="mid:AE0946C4-1FAF-4BC5-99C9-137BCF2B376F@apple.com" type="cite" class="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
<br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Mar 6, 2017, at 2:33 PM, David Blaikie <<a moz-do-not-send="true" href="mailto:dblaikie@gmail.com" class="">dblaikie@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class=""><br class="">
<br class="">
<div class="gmail_quote">
<div dir="ltr" class="">On Thu, Mar 2, 2017 at 5:20 PM
Adrian Prantl via llvm-commits <<a moz-do-not-send="true" href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>>
wrote:<br class="">
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Author:
adrian<br class="gmail_msg">
Date: Thu Mar 2 19:08:25 2017<br class="gmail_msg">
New Revision: 296847<br class="gmail_msg">
<br class="gmail_msg">
URL: <a moz-do-not-send="true" href="http://llvm.org/viewvc/llvm-project?rev=296847&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=296847&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
LiveDebugValues: Assume calls never clobber SP.<br class="gmail_msg">
<br class="gmail_msg">
A call should never modify the stack pointer, but some
backends are<br class="gmail_msg">
not so sure about this and never list SP in the
regmask.</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
<br class="">
I don't quite understand this statement. For callee-cleanup calling
conventions (e.g. pascal, stdcall, etc. on Windows), the callee
(and, thus, from the perspective of the caller, the call
instruction), does modify the stack pointer. What am I missing?<br class=""></div></div></blockquote><div><br class=""></div><div>That's a good point, thanks. I guess what we really want to know in LiveDebugValues is whether a function call (or rather the combination of instructions pushing the argument and the function call) clobbers any variables that are stored in the caller's frame, and that isn't the case (right?). I should at the very least improve the wording in the comment.</div><div><br class=""></div><div>thanks,</div><div>adrian</div><br class=""><blockquote type="cite" class=""><div class=""><div bgcolor="#FFFFFF" text="#000000" class="">
<br class="">
Thanks again,<br class="">
Hal<br class="">
<br class="">
<blockquote cite="mid:AE0946C4-1FAF-4BC5-99C9-137BCF2B376F@apple.com" type="cite" class="">
<div class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_quote">
<div class=""><br class="">
</div>
<div class="">Should the backends be fixed instead?</div>
</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">Yes they should, but my understanding is that this is a
larger undertaking that is not likely to happen anytime soon.</div>
<div class=""><br class="">
</div>
<div class="">-- adrian</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_quote">
<div class=""> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex"> For
the<br class="gmail_msg">
purposes of LiveDebugValues we assume a call never
clobbers SP. We<br class="gmail_msg">
already have a similar workaround in
DbgValueHistoryCalculator (which<br class="gmail_msg">
we hopefully can retire soon).<br class="gmail_msg">
<br class="gmail_msg">
This fixes the availabilty of local ASANified
variables on AArch64.<br class="gmail_msg">
<br class="gmail_msg">
<a moz-do-not-send="true" href="rdar://problem/27757381" class="">rdar://problem/27757381</a><br class="gmail_msg">
<br class="gmail_msg">
Added:<br class="gmail_msg">
llvm/trunk/test/DebugInfo/AArch64/asan-stack-vars.ll<br class="gmail_msg">
Modified:<br class="gmail_msg">
llvm/trunk/lib/CodeGen/LiveDebugValues.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/CodeGen/LiveDebugValues.cpp<br class="gmail_msg">
URL: <a moz-do-not-send="true" href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveDebugValues.cpp?rev=296847&r1=296846&r2=296847&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveDebugValues.cpp?rev=296847&r1=296846&r2=296847&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/CodeGen/LiveDebugValues.cpp
(original)<br class="gmail_msg">
+++ llvm/trunk/lib/CodeGen/LiveDebugValues.cpp Thu
Mar 2 19:08:25 2017<br class="gmail_msg">
@@ -373,8 +373,12 @@ void
LiveDebugValues::transferRegisterDe<br class="gmail_msg">
unsigned SP =
TLI->getStackPointerRegisterToSaveRestore();<br class="gmail_msg">
SparseBitVector<> KillSet;<br class="gmail_msg">
for (const MachineOperand &MO : MI.operands())
{<br class="gmail_msg">
+ // Determine whether the operand is a register
def. Assume that call<br class="gmail_msg">
+ // instructions never clobber SP, because some
backends (e.g., AArch64)<br class="gmail_msg">
+ // never list SP in the regmask.<br class="gmail_msg">
if (MO.isReg() && MO.isDef() &&
MO.getReg() &&<br class="gmail_msg">
- TRI->isPhysicalRegister(MO.getReg())) {<br class="gmail_msg">
+ TRI->isPhysicalRegister(MO.getReg())
&&<br class="gmail_msg">
+ !(MI.isCall() && MO.getReg() == SP))
{<br class="gmail_msg">
// Remove ranges of all aliased registers.<br class="gmail_msg">
for (MCRegAliasIterator RAI(MO.getReg(), TRI,
true); RAI.isValid(); ++RAI)<br class="gmail_msg">
for (unsigned ID : OpenRanges.getVarLocs())<br class="gmail_msg">
<br class="gmail_msg">
Added:
llvm/trunk/test/DebugInfo/AArch64/asan-stack-vars.ll<br class="gmail_msg">
URL: <a moz-do-not-send="true" href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/AArch64/asan-stack-vars.ll?rev=296847&view=auto" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/AArch64/asan-stack-vars.ll?rev=296847&view=auto</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
---
llvm/trunk/test/DebugInfo/AArch64/asan-stack-vars.ll
(added)<br class="gmail_msg">
+++
llvm/trunk/test/DebugInfo/AArch64/asan-stack-vars.ll
Thu Mar 2 19:08:25 2017<br class="gmail_msg">
@@ -0,0 +1,326 @@<br class="gmail_msg">
+; RUN: llc -O0 -filetype=obj -o - %s | llvm-dwarfdump
- | FileCheck %s<br class="gmail_msg">
+;<br class="gmail_msg">
+; Derived from (clang -O0 -g -fsanitize=address
-fobjc-arc)<br class="gmail_msg">
+; @protocol NSObject<br class="gmail_msg">
+; @end<br class="gmail_msg">
+; @interface NSObject<NSObject>{}<br class="gmail_msg">
+; + (instancetype)alloc;<br class="gmail_msg">
+; @end<br class="gmail_msg">
+; struct CGSize {<br class="gmail_msg">
+; double width;<br class="gmail_msg">
+; double height;<br class="gmail_msg">
+; };<br class="gmail_msg">
+; typedef struct CGSize CGSize;<br class="gmail_msg">
+; @interface Object : NSObject<br class="gmail_msg">
+; - (instancetype)initWithSize:(CGSize)size;<br class="gmail_msg">
+; - (id)aMessage;<br class="gmail_msg">
+; @end<br class="gmail_msg">
+; @implementation MyObject<br class="gmail_msg">
+; + (id)doWithSize:(CGSize)imageSize
andObject:(id)object {<br class="gmail_msg">
+; return [object aMessage];<br class="gmail_msg">
+; }<br class="gmail_msg">
+; @end<br class="gmail_msg">
+;<br class="gmail_msg">
+; CHECK: .debug_info contents:<br class="gmail_msg">
+; CHECK: DW_TAG_subprogram<br class="gmail_msg">
+; CHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
(0x0000000000000000)<br class="gmail_msg">
+; CHECK-NEXT: DW_AT_high_pc [DW_FORM_addr]
([[FN_END:.*]])<br class="gmail_msg">
+; CHECK: "_cmd"<br class="gmail_msg">
+; CHECK: DW_TAG_formal_parameter<br class="gmail_msg">
+; CHECK-NEXT: DW_AT_location {{.*}} ([[OFS:.*]])<br class="gmail_msg">
+; CHECK-NEXT: DW_AT_name {{.*}}"imageSize"<br class="gmail_msg">
+;<br class="gmail_msg">
+; CHECK: .debug_loc contents:<br class="gmail_msg">
+; CHECK: [[OFS]]: Beginning address offset:
0x0000000000000000<br class="gmail_msg">
+; CHECK_NOT: 0x{{.*}}: Beginning<br class="gmail_msg">
+; CHECK: Ending address offset: [[FN_END]]<br class="gmail_msg">
+<br class="gmail_msg">
+; ModuleID = 'm.m'<br class="gmail_msg">
+source_filename = "m.m"<br class="gmail_msg">
+target datalayout =
"e-m:o-i64:64-i128:128-n32:64-S128"<br class="gmail_msg">
+target triple = "arm64-apple-ios"<br class="gmail_msg">
+<br class="gmail_msg">
+%0 = type opaque<br class="gmail_msg">
+%struct._class_t = type { %struct._class_t*,
%struct._class_t*, %struct._objc_cache*, i8* (i8*,
i8*)**, %struct._class_ro_t* }<br class="gmail_msg">
+%struct._objc_cache = type opaque<br class="gmail_msg">
+%struct._class_ro_t = type { i32, i32, i32, i8*, i8*,
%struct.__method_list_t*,
%struct._objc_protocol_list*, %struct._ivar_list_t*,
i8*, %struct._prop_list_t* }<br class="gmail_msg">
+%struct.__method_list_t = type { i32, i32, [0 x
%struct._objc_method] }<br class="gmail_msg">
+%struct._objc_method = type { i8*, i8*, i8* }<br class="gmail_msg">
+%struct._objc_protocol_list = type { i64, [0 x
%struct._protocol_t*] }<br class="gmail_msg">
+%struct._protocol_t = type { i8*, i8*,
%struct._objc_protocol_list*,
%struct.__method_list_t*, %struct.__method_list_t*,
%struct.__method_list_t*, %struct.__method_list_t*,
%struct._prop_list_t*, i32, i32, i8**, i8*,
%struct._prop_list_t* }<br class="gmail_msg">
+%struct._ivar_list_t = type { i32, i32, [0 x
%struct._ivar_t] }<br class="gmail_msg">
+%struct._ivar_t = type { i32*, i8*, i8*, i32, i32 }<br class="gmail_msg">
+%struct._prop_list_t = type { i32, i32, [0 x
%struct._prop_t] }<br class="gmail_msg">
+%struct._prop_t = type { i8*, i8* }<br class="gmail_msg">
+%struct.CGSize = type { double, double }<br class="gmail_msg">
+<br class="gmail_msg">
+@"OBJC_CLASS_$_Object" = external global
%struct._class_t<br class="gmail_msg">
+@"OBJC_CLASSLIST_REFERENCES_$_" = private global
%struct._class_t* @"OBJC_CLASS_$_Object", section
"__DATA, __objc_classrefs, regular, no_dead_strip",
align 8<br class="gmail_msg">
+@OBJC_METH_VAR_NAME_ = private unnamed_addr constant
[6 x i8] c"alloc\00", section
"__TEXT,__objc_methname,cstring_literals", align 1<br class="gmail_msg">
+@OBJC_SELECTOR_REFERENCES_ = private
externally_initialized global i8* getelementptr
inbounds ([6 x i8], [6 x i8]* @OBJC_METH_VAR_NAME_,
i32 0, i32 0), section "__DATA, __objc_selrefs,
literal_pointers, no_dead_strip", align 8<br class="gmail_msg">
+@OBJC_METH_VAR_NAME_.1 = private unnamed_addr
constant [14 x i8] c"initWithSize:\00", section
"__TEXT,__objc_methname,cstring_literals", align 1<br class="gmail_msg">
+@OBJC_SELECTOR_REFERENCES_.2 = private
externally_initialized global i8* getelementptr
inbounds ([14 x i8], [14 x i8]*
@OBJC_METH_VAR_NAME_.1, i32 0, i32 0), section
"__DATA, __objc_selrefs, literal_pointers,
no_dead_strip", align 8<br class="gmail_msg">
+@OBJC_METH_VAR_NAME_.3 = private unnamed_addr
constant [9 x i8] c"aMessage\00", section
"__TEXT,__objc_methname,cstring_literals", align 1<br class="gmail_msg">
+@OBJC_SELECTOR_REFERENCES_.4 = private
externally_initialized global i8* getelementptr
inbounds ([9 x i8], [9 x i8]* @OBJC_METH_VAR_NAME_.3,
i32 0, i32 0), section "__DATA, __objc_selrefs,
literal_pointers, no_dead_strip", align 8<br class="gmail_msg">
+@_objc_empty_cache = external global
%struct._objc_cache<br class="gmail_msg">
+@"OBJC_CLASS_$_MyObject" = global %struct._class_t {
%struct._class_t* @"OBJC_METACLASS_$_MyObject",
%struct._class_t* null, %struct._objc_cache*
@_objc_empty_cache, i8* (i8*, i8*)** null,
%struct._class_ro_t* @"\01l_OBJC_CLASS_RO_$_MyObject"
}, section "__DATA, __objc_data", align 8<br class="gmail_msg">
+@"OBJC_METACLASS_$_MyObject" = global
%struct._class_t { %struct._class_t*
@"OBJC_METACLASS_$_MyObject", %struct._class_t*
@"OBJC_CLASS_$_MyObject", %struct._objc_cache*
@_objc_empty_cache, i8* (i8*, i8*)** null,
%struct._class_ro_t*
@"\01l_OBJC_METACLASS_RO_$_MyObject" }, section
"__DATA, __objc_data", align 8<br class="gmail_msg">
+@OBJC_CLASS_NAME_ = private unnamed_addr constant [9
x i8] c"MyObject\00", section
"__TEXT,__objc_classname,cstring_literals", align 1<br class="gmail_msg">
+@OBJC_METH_VAR_NAME_.5 = private unnamed_addr
constant [12 x i8] c"doWithSize:\00", section
"__TEXT,__objc_methname,cstring_literals", align 1<br class="gmail_msg">
+@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant
[21 x i8] c"@32@0:8{CGSize=dd}16\00", section
"__TEXT,__objc_methtype,cstring_literals", align 1<br class="gmail_msg">
+@"\01l_OBJC_$_CLASS_METHODS_MyObject" = private
global { i32, i32, [1 x %struct._objc_method] } { i32
24, i32 1, [1 x %struct._objc_method]
[%struct._objc_method { i8* getelementptr inbounds
([12 x i8], [12 x i8]* @OBJC_METH_VAR_NAME_.5, i32 0,
i32 0), i8* getelementptr inbounds ([21 x i8], [21 x
i8]* @OBJC_METH_VAR_TYPE_, i32 0, i32 0), i8* bitcast
(i8* (i8*, i8*, [2 x double])* @"\01+[MyObject
doWithSize:]" to i8*) }] }, section "__DATA,
__objc_const", align 8<br class="gmail_msg">
+@"\01l_OBJC_METACLASS_RO_$_MyObject" = private global
%struct._class_ro_t { i32 131, i32 40, i32 40, i8*
null, i8* getelementptr inbounds ([9 x i8], [9 x i8]*
@OBJC_CLASS_NAME_, i32 0, i32 0),
%struct.__method_list_t* bitcast ({ i32, i32, [1 x
%struct._objc_method] }*
@"\01l_OBJC_$_CLASS_METHODS_MyObject" to
%struct.__method_list_t*),
%struct._objc_protocol_list* null,
%struct._ivar_list_t* null, i8* null,
%struct._prop_list_t* null }, section "__DATA,
__objc_const", align 8<br class="gmail_msg">
+@"\01l_OBJC_CLASS_RO_$_MyObject" = private global
%struct._class_ro_t { i32 130, i32 0, i32 0, i8* null,
i8* getelementptr inbounds ([9 x i8], [9 x i8]*
@OBJC_CLASS_NAME_, i32 0, i32 0),
%struct.__method_list_t* null,
%struct._objc_protocol_list* null,
%struct._ivar_list_t* null, i8* null,
%struct._prop_list_t* null }, section "__DATA,
__objc_const", align 8<br class="gmail_msg">
+@"OBJC_LABEL_CLASS_$" = private global [1 x i8*] [i8*
bitcast (%struct._class_t* @"OBJC_CLASS_$_MyObject" to
i8*)], section "__DATA, __objc_classlist, regular,
no_dead_strip", align 8<br class="gmail_msg">
+@llvm.compiler.used = appending global [12 x i8*]
[i8* bitcast (%struct._class_t**
@"OBJC_CLASSLIST_REFERENCES_$_" to i8*), i8*
getelementptr inbounds ([6 x i8], [6 x i8]*
@OBJC_METH_VAR_NAME_, i32 0, i32 0), i8* bitcast (i8**
@OBJC_SELECTOR_REFERENCES_ to i8*), i8* getelementptr
inbounds ([14 x i8], [14 x i8]*
@OBJC_METH_VAR_NAME_.1, i32 0, i32 0), i8* bitcast
(i8** @OBJC_SELECTOR_REFERENCES_.2 to i8*), i8*
getelementptr inbounds ([9 x i8], [9 x i8]*
@OBJC_METH_VAR_NAME_.3, i32 0, i32 0), i8* bitcast
(i8** @OBJC_SELECTOR_REFERENCES_.4 to i8*), i8*
getelementptr inbounds ([9 x i8], [9 x i8]*
@OBJC_CLASS_NAME_, i32 0, i32 0), i8* getelementptr
inbounds ([12 x i8], [12 x i8]*
@OBJC_METH_VAR_NAME_.5, i32 0, i32 0), i8*
getelementptr inbounds ([21 x i8], [21 x i8]*
@OBJC_METH_VAR_TYPE_, i32 0, i32 0), i8* bitcast ({
i32, i32, [1 x %struct._objc_method] }*
@"\01l_OBJC_$_CLASS_METHODS_MyObject" to i8*), i8*
bitcast ([1 x i8*]* @"OBJC_LABEL_CLASS_$" to i8*)],
section "llvm.metadata"<br class="gmail_msg">
+@llvm.global_ctors = appending global [1 x { i32,
void ()*, i8* }] [{ i32, void ()*, i8* } { i32 1, void
()* @asan.module_ctor, i8* null }]<br class="gmail_msg">
+@__asan_shadow_memory_dynamic_address = external
global i64<br class="gmail_msg">
+@__asan_gen_ = private unnamed_addr constant [34 x
i8] c"2 32 16 9 imageSize 64 8 6 object\00", align 1<br class="gmail_msg">
+<br class="gmail_msg">
+; Function Attrs: noinline sanitize_address ssp
uwtable<br class="gmail_msg">
+define internal i8* @"\01+[MyObject doWithSize:]"(i8*
%self, i8* %_cmd, [2 x double] %imageSize.coerce) #0
!dbg !14 {<br class="gmail_msg">
+entry:<br class="gmail_msg">
+ %0 = load i64, i64*
@__asan_shadow_memory_dynamic_address<br class="gmail_msg">
+ %self.addr = alloca i8*, align 8<br class="gmail_msg">
+ %_cmd.addr = alloca i8*, align 8<br class="gmail_msg">
+ %MyAlloca = alloca [96 x i8], align 32, !dbg !35<br class="gmail_msg">
+ %1 = ptrtoint [96 x i8]* %MyAlloca to i64, !dbg !35<br class="gmail_msg">
+ %2 = add i64 %1, 32, !dbg !35<br class="gmail_msg">
+ %3 = inttoptr i64 %2 to %struct.CGSize*, !dbg !35<br class="gmail_msg">
+ %4 = add i64 %1, 64, !dbg !35<br class="gmail_msg">
+ %5 = inttoptr i64 %4 to %0**, !dbg !35<br class="gmail_msg">
+ %6 = inttoptr i64 %1 to i64*, !dbg !35<br class="gmail_msg">
+ store i64 1102416563, i64* %6, !dbg !35<br class="gmail_msg">
+ %7 = add i64 %1, 8, !dbg !35<br class="gmail_msg">
+ %8 = inttoptr i64 %7 to i64*, !dbg !35<br class="gmail_msg">
+ store i64 ptrtoint ([34 x i8]* @__asan_gen_ to
i64), i64* %8, !dbg !35<br class="gmail_msg">
+ %9 = add i64 %1, 16, !dbg !35<br class="gmail_msg">
+ %10 = inttoptr i64 %9 to i64*, !dbg !35<br class="gmail_msg">
+ store i64 ptrtoint (i8* (i8*, i8*, [2 x double])*
@"\01+[MyObject doWithSize:]" to i64), i64* %10, !dbg
!35<br class="gmail_msg">
+ %11 = lshr i64 %1, 3, !dbg !35<br class="gmail_msg">
+ %12 = add i64 %11, %0, !dbg !35<br class="gmail_msg">
+ %13 = add i64 %12, 0, !dbg !35<br class="gmail_msg">
+ %14 = inttoptr i64 %13 to i64*, !dbg !35<br class="gmail_msg">
+ store i64 -940689368107847183, i64* %14, align 1,
!dbg !35<br class="gmail_msg">
+ %15 = add i64 %12, 9, !dbg !35<br class="gmail_msg">
+ %16 = inttoptr i64 %15 to i16*, !dbg !35<br class="gmail_msg">
+ store i16 -3085, i16* %16, align 1, !dbg !35<br class="gmail_msg">
+ %17 = add i64 %12, 11, !dbg !35<br class="gmail_msg">
+ %18 = inttoptr i64 %17 to i8*, !dbg !35<br class="gmail_msg">
+ store i8 -13, i8* %18, align 1, !dbg !35<br class="gmail_msg">
+ call void @llvm.dbg.declare(metadata
%struct.CGSize* %3, metadata !36, metadata !37), !dbg
!38<br class="gmail_msg">
+ call void @llvm.dbg.declare(metadata %0** %5,
metadata !39, metadata !37), !dbg !45<br class="gmail_msg">
+ %19 = bitcast %struct.CGSize* %3 to [2 x double]*<br class="gmail_msg">
+ %20 = ptrtoint [2 x double]* %19 to i64<br class="gmail_msg">
+ %21 = lshr i64 %20, 3<br class="gmail_msg">
+ %22 = add i64 %21, %0<br class="gmail_msg">
+ %23 = inttoptr i64 %22 to i16*<br class="gmail_msg">
+ %24 = load i16, i16* %23<br class="gmail_msg">
+ %25 = icmp ne i16 %24, 0<br class="gmail_msg">
+ br i1 %25, label %26, label %27<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:26:
; preds = %entry<br class="gmail_msg">
+ call void @__asan_report_store16(i64 %20)<br class="gmail_msg">
+ call void asm sideeffect "", ""()<br class="gmail_msg">
+ unreachable<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:27:
; preds = %entry<br class="gmail_msg">
+ store [2 x double] %imageSize.coerce, [2 x double]*
%19, align 8<br class="gmail_msg">
+ store i8* %self, i8** %self.addr, align 8<br class="gmail_msg">
+ call void @llvm.dbg.declare(metadata i8**
%self.addr, metadata !46, metadata !48), !dbg !49<br class="gmail_msg">
+ store i8* %_cmd, i8** %_cmd.addr, align 8<br class="gmail_msg">
+ call void @llvm.dbg.declare(metadata i8**
%_cmd.addr, metadata !50, metadata !48), !dbg !49<br class="gmail_msg">
+ %28 = load %struct._class_t*, %struct._class_t**
@"OBJC_CLASSLIST_REFERENCES_$_", align 8, !dbg !52<br class="gmail_msg">
+ %29 = add i64 lshr (i64 ptrtoint (i8**
@OBJC_SELECTOR_REFERENCES_ to i64), i64 3), %0, !dbg
!52<br class="gmail_msg">
+ %30 = inttoptr i64 %29 to i8*, !dbg !52<br class="gmail_msg">
+ %31 = load i8, i8* %30, !dbg !52<br class="gmail_msg">
+ %32 = icmp ne i8 %31, 0, !dbg !52<br class="gmail_msg">
+ br i1 %32, label %33, label %34, !dbg !52<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:33:
; preds = %27<br class="gmail_msg">
+ call void @__asan_report_load8(i64 ptrtoint (i8**
@OBJC_SELECTOR_REFERENCES_ to i64)), !dbg !52<br class="gmail_msg">
+ call void asm sideeffect "", ""(), !dbg !52<br class="gmail_msg">
+ unreachable, !dbg !52<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:34:
; preds = %27<br class="gmail_msg">
+ %35 = load i8*, i8** @OBJC_SELECTOR_REFERENCES_,
align 8, !dbg !52, !invariant.load !2<br class="gmail_msg">
+ %36 = bitcast %struct._class_t* %28 to i8*, !dbg
!52<br class="gmail_msg">
+ %call = call i8* bitcast (i8* (i8*, i8*, ...)*
@objc_msgSend to i8* (i8*, i8*)*)(i8* %36, i8* %35),
!dbg !52<br class="gmail_msg">
+ %37 = bitcast i8* %call to %0*, !dbg !52<br class="gmail_msg">
+ %38 = add i64 lshr (i64 ptrtoint (i8**
@OBJC_SELECTOR_REFERENCES_.2 to i64), i64 3), %0, !dbg
!53<br class="gmail_msg">
+ %39 = inttoptr i64 %38 to i8*, !dbg !53<br class="gmail_msg">
+ %40 = load i8, i8* %39, !dbg !53<br class="gmail_msg">
+ %41 = icmp ne i8 %40, 0, !dbg !53<br class="gmail_msg">
+ br i1 %41, label %42, label %43, !dbg !53<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:42:
; preds = %34<br class="gmail_msg">
+ call void @__asan_report_load8(i64 ptrtoint (i8**
@OBJC_SELECTOR_REFERENCES_.2 to i64)), !dbg !53<br class="gmail_msg">
+ call void asm sideeffect "", ""(), !dbg !53<br class="gmail_msg">
+ unreachable, !dbg !53<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:43:
; preds = %34<br class="gmail_msg">
+ %44 = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.2,
align 8, !dbg !53, !invariant.load !2<br class="gmail_msg">
+ %45 = bitcast %0* %37 to i8*, !dbg !53<br class="gmail_msg">
+ %46 = bitcast %struct.CGSize* %3 to [2 x double]*,
!dbg !53<br class="gmail_msg">
+ %47 = ptrtoint [2 x double]* %46 to i64, !dbg !53<br class="gmail_msg">
+ %48 = lshr i64 %47, 3, !dbg !53<br class="gmail_msg">
+ %49 = add i64 %48, %0, !dbg !53<br class="gmail_msg">
+ %50 = inttoptr i64 %49 to i16*, !dbg !53<br class="gmail_msg">
+ %51 = load i16, i16* %50, !dbg !53<br class="gmail_msg">
+ %52 = icmp ne i16 %51, 0, !dbg !53<br class="gmail_msg">
+ br i1 %52, label %53, label %54, !dbg !53<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:53:
; preds = %43<br class="gmail_msg">
+ call void @__asan_report_load16(i64 %47), !dbg !53<br class="gmail_msg">
+ call void asm sideeffect "", ""(), !dbg !53<br class="gmail_msg">
+ unreachable, !dbg !53<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:54:
; preds = %43<br class="gmail_msg">
+ %55 = load [2 x double], [2 x double]* %46, align
8, !dbg !53<br class="gmail_msg">
+ %call1 = call i8* bitcast (i8* (i8*, i8*, ...)*
@objc_msgSend to i8* (i8*, i8*, [2 x double])*)(i8*
%45, i8* %44, [2 x double] %55), !dbg !53<br class="gmail_msg">
+ %56 = bitcast i8* %call1 to %0*, !dbg !53<br class="gmail_msg">
+ %57 = ptrtoint %0** %5 to i64, !dbg !45<br class="gmail_msg">
+ %58 = lshr i64 %57, 3, !dbg !45<br class="gmail_msg">
+ %59 = add i64 %58, %0, !dbg !45<br class="gmail_msg">
+ %60 = inttoptr i64 %59 to i8*, !dbg !45<br class="gmail_msg">
+ %61 = load i8, i8* %60, !dbg !45<br class="gmail_msg">
+ %62 = icmp ne i8 %61, 0, !dbg !45<br class="gmail_msg">
+ br i1 %62, label %63, label %64, !dbg !45<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:63:
; preds = %54<br class="gmail_msg">
+ call void @__asan_report_store8(i64 %57), !dbg !45<br class="gmail_msg">
+ call void asm sideeffect "", ""(), !dbg !45<br class="gmail_msg">
+ unreachable, !dbg !45<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:64:
; preds = %54<br class="gmail_msg">
+ store %0* %56, %0** %5, align 8, !dbg !45<br class="gmail_msg">
+ %65 = load %0*, %0** %5, align 8, !dbg !54<br class="gmail_msg">
+ %66 = add i64 lshr (i64 ptrtoint (i8**
@OBJC_SELECTOR_REFERENCES_.4 to i64), i64 3), %0, !dbg
!55<br class="gmail_msg">
+ %67 = inttoptr i64 %66 to i8*, !dbg !55<br class="gmail_msg">
+ %68 = load i8, i8* %67, !dbg !55<br class="gmail_msg">
+ %69 = icmp ne i8 %68, 0, !dbg !55<br class="gmail_msg">
+ br i1 %69, label %70, label %71, !dbg !55<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:70:
; preds = %64<br class="gmail_msg">
+ call void @__asan_report_load8(i64 ptrtoint (i8**
@OBJC_SELECTOR_REFERENCES_.4 to i64)), !dbg !55<br class="gmail_msg">
+ call void asm sideeffect "", ""(), !dbg !55<br class="gmail_msg">
+ unreachable, !dbg !55<br class="gmail_msg">
+<br class="gmail_msg">
+; <label>:71:
; preds = %64<br class="gmail_msg">
+ %72 = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.4,
align 8, !dbg !55, !invariant.load !2<br class="gmail_msg">
+ %73 = bitcast %0* %65 to i8*, !dbg !55<br class="gmail_msg">
+ %call2 = call i8* bitcast (i8* (i8*, i8*, ...)*
@objc_msgSend to i8* (i8*, i8*)*)(i8* %73, i8* %72),
!dbg !55<br class="gmail_msg">
+ call void asm sideeffect "mov\09fp, fp\09\09#
marker for objc_retainAutoreleaseReturnValue", ""(),
!dbg !55<br class="gmail_msg">
+ %74 = call i8*
@objc_retainAutoreleasedReturnValue(i8* %call2) #3,
!dbg !55<br class="gmail_msg">
+ %75 = bitcast %0** %5 to i8**, !dbg !56<br class="gmail_msg">
+ call void @objc_storeStrong(i8** %75, i8* null) #3,
!dbg !56<br class="gmail_msg">
+ %76 = tail call i8*
@objc_autoreleaseReturnValue(i8* %74) #3, !dbg !56<br class="gmail_msg">
+ store i64 1172321806, i64* %6, !dbg !56<br class="gmail_msg">
+ %77 = add i64 %12, 0, !dbg !56<br class="gmail_msg">
+ %78 = inttoptr i64 %77 to i64*, !dbg !56<br class="gmail_msg">
+ store i64 0, i64* %78, align 1, !dbg !56<br class="gmail_msg">
+ %79 = add i64 %12, 9, !dbg !56<br class="gmail_msg">
+ %80 = inttoptr i64 %79 to i16*, !dbg !56<br class="gmail_msg">
+ store i16 0, i16* %80, align 1, !dbg !56<br class="gmail_msg">
+ %81 = add i64 %12, 11, !dbg !56<br class="gmail_msg">
+ %82 = inttoptr i64 %81 to i8*, !dbg !56<br class="gmail_msg">
+ store i8 0, i8* %82, align 1, !dbg !56<br class="gmail_msg">
+ ret i8* %76, !dbg !56<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; Function Attrs: nounwind readnone<br class="gmail_msg">
+declare void @llvm.dbg.declare(metadata, metadata,
metadata) #1<br class="gmail_msg">
+<br class="gmail_msg">
+; Function Attrs: nonlazybind<br class="gmail_msg">
+declare i8* @objc_msgSend(i8*, i8*, ...) #2<br class="gmail_msg">
+<br class="gmail_msg">
+declare i8* @objc_retainAutoreleasedReturnValue(i8*
returned)<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @objc_storeStrong(i8**, i8*)<br class="gmail_msg">
+<br class="gmail_msg">
+declare i8* @objc_autoreleaseReturnValue(i8*
returned)<br class="gmail_msg">
+<br class="gmail_msg">
+define internal void @asan.module_ctor() {<br class="gmail_msg">
+ call void @__asan_init()<br class="gmail_msg">
+ call void @__asan_version_mismatch_check_v8()<br class="gmail_msg">
+ ret void<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @__asan_init()<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @__asan_version_mismatch_check_v8()<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @__asan_report_load8(i64)<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @__asan_report_load16(i64)<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @__asan_report_store8(i64)<br class="gmail_msg">
+<br class="gmail_msg">
+declare void @__asan_report_store16(i64)<br class="gmail_msg">
+<br class="gmail_msg">
+attributes #0 = { noinline sanitize_address ssp
uwtable }<br class="gmail_msg">
+attributes #1 = { nounwind readnone }<br class="gmail_msg">
+attributes #2 = { nonlazybind }<br class="gmail_msg">
+attributes #3 = { nounwind }<br class="gmail_msg">
+<br class="gmail_msg">
+!<a moz-do-not-send="true" href="http://llvm.dbg.cu/" rel="noreferrer" class="gmail_msg" target="_blank">llvm.dbg.cu</a>
= !{!0}<br class="gmail_msg">
+!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11,
!12}<br class="gmail_msg">
+!llvm.ident = !{!13}<br class="gmail_msg">
+<br class="gmail_msg">
+!0 = distinct !DICompileUnit(language: DW_LANG_ObjC,
file: !1, producer: "clang version 5.0.0 (trunk
295779) (llvm/trunk 295777)", isOptimized: false,
runtimeVersion: 2, emissionKind: FullDebug, enums: !2,
retainedTypes: !3)<br class="gmail_msg">
+!1 = !DIFile(filename: "m.m", directory: "/")<br class="gmail_msg">
+!2 = !{}<br class="gmail_msg">
+!3 = !{!4}<br class="gmail_msg">
+!4 = !DICompositeType(tag: DW_TAG_structure_type,
name: "MyObject", scope: !1, file: !1, line: 15,
flags: DIFlagObjcClassComplete, elements: !2,
runtimeLang: DW_LANG_ObjC)<br class="gmail_msg">
+!5 = !{i32 1, !"Objective-C Version", i32 2}<br class="gmail_msg">
+!6 = !{i32 1, !"Objective-C Image Info Version", i32
0}<br class="gmail_msg">
+!7 = !{i32 1, !"Objective-C Image Info Section",
!"__DATA, __objc_imageinfo, regular, no_dead_strip"}<br class="gmail_msg">
+!8 = !{i32 4, !"Objective-C Garbage Collection", i32
0}<br class="gmail_msg">
+!9 = !{i32 1, !"Objective-C Class Properties", i32
64}<br class="gmail_msg">
+!10 = !{i32 2, !"Dwarf Version", i32 2}<br class="gmail_msg">
+!11 = !{i32 2, !"Debug Info Version", i32 3}<br class="gmail_msg">
+!12 = !{i32 1, !"PIC Level", i32 2}<br class="gmail_msg">
+!13 = !{!"clang version 5.0.0 (trunk 295779)
(llvm/trunk 295777)"}<br class="gmail_msg">
+!14 = distinct !DISubprogram(name: "+[MyObject
doWithSize:]", scope: !1, file: !1, line: 16, type:
!15, isLocal: true, isDefinition: true, scopeLine: 16,
flags: DIFlagPrototyped, isOptimized: false, unit: !0,
variables: !2)<br class="gmail_msg">
+!15 = !DISubroutineType(types: !16)<br class="gmail_msg">
+!16 = !{!17, !24, !26, !29}<br class="gmail_msg">
+!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "id",
file: !1, baseType: !18)<br class="gmail_msg">
+!18 = !DIDerivedType(tag: DW_TAG_pointer_type,
baseType: !19, size: 64)<br class="gmail_msg">
+!19 = !DICompositeType(tag: DW_TAG_structure_type,
name: "objc_object", file: !1, elements: !20)<br class="gmail_msg">
+!20 = !{!21}<br class="gmail_msg">
+!21 = !DIDerivedType(tag: DW_TAG_member, name: "isa",
scope: !19, file: !1, baseType: !22, size: 64)<br class="gmail_msg">
+!22 = !DIDerivedType(tag: DW_TAG_pointer_type,
baseType: !23, size: 64)<br class="gmail_msg">
+!23 = !DICompositeType(tag: DW_TAG_structure_type,
name: "objc_class", file: !1, flags: DIFlagFwdDecl)<br class="gmail_msg">
+!24 = !DIDerivedType(tag: DW_TAG_const_type,
baseType: !25, flags: DIFlagArtificial |
DIFlagObjectPointer)<br class="gmail_msg">
+!25 = !DIDerivedType(tag: DW_TAG_typedef, name:
"Class", file: !1, baseType: !22)<br class="gmail_msg">
+!26 = !DIDerivedType(tag: DW_TAG_typedef, name:
"SEL", file: !1, baseType: !27, flags:
DIFlagArtificial)<br class="gmail_msg">
+!27 = !DIDerivedType(tag: DW_TAG_pointer_type,
baseType: !28, size: 64)<br class="gmail_msg">
+!28 = !DICompositeType(tag: DW_TAG_structure_type,
name: "objc_selector", file: !1, flags: DIFlagFwdDecl)<br class="gmail_msg">
+!29 = !DIDerivedType(tag: DW_TAG_typedef, name:
"CGSize", file: !1, line: 10, baseType: !30)<br class="gmail_msg">
+!30 = distinct !DICompositeType(tag:
DW_TAG_structure_type, name: "CGSize", file: !1, line:
6, size: 128, elements: !31)<br class="gmail_msg">
+!31 = !{!32, !34}<br class="gmail_msg">
+!32 = !DIDerivedType(tag: DW_TAG_member, name:
"width", scope: !30, file: !1, line: 7, baseType: !33,
size: 64)<br class="gmail_msg">
+!33 = !DIBasicType(name: "double", size: 64,
encoding: DW_ATE_float)<br class="gmail_msg">
+!34 = !DIDerivedType(tag: DW_TAG_member, name:
"height", scope: !30, file: !1, line: 8, baseType:
!33, size: 64, offset: 64)<br class="gmail_msg">
+!35 = !DILocation(line: 16, scope: !14)<br class="gmail_msg">
+!36 = !DILocalVariable(name: "imageSize", arg: 3,
scope: !14, file: !1, line: 16, type: !29)<br class="gmail_msg">
+!37 = !DIExpression(DW_OP_deref)<br class="gmail_msg">
+!38 = !DILocation(line: 16, column: 26, scope: !14)<br class="gmail_msg">
+!39 = !DILocalVariable(name: "object", scope: !14,
file: !1, line: 17, type: !40)<br class="gmail_msg">
+!40 = !DIDerivedType(tag: DW_TAG_pointer_type,
baseType: !41, size: 64)<br class="gmail_msg">
+!41 = !DICompositeType(tag: DW_TAG_structure_type,
name: "Object", scope: !1, file: !1, line: 11,
elements: !42, runtimeLang: DW_LANG_ObjC)<br class="gmail_msg">
+!42 = !{!43}<br class="gmail_msg">
+!43 = !DIDerivedType(tag: DW_TAG_inheritance, scope:
!41, baseType: !44)<br class="gmail_msg">
+!44 = !DICompositeType(tag: DW_TAG_structure_type,
name: "NSObject", scope: !1, file: !1, line: 3,
elements: !2, runtimeLang: DW_LANG_ObjC)<br class="gmail_msg">
+!45 = !DILocation(line: 17, column: 11, scope: !14)<br class="gmail_msg">
+!46 = !DILocalVariable(name: "self", arg: 1, scope:
!14, type: !47, flags: DIFlagArtificial |
DIFlagObjectPointer)<br class="gmail_msg">
+!47 = !DIDerivedType(tag: DW_TAG_const_type,
baseType: !25)<br class="gmail_msg">
+!48 = !DIExpression()<br class="gmail_msg">
+!49 = !DILocation(line: 0, scope: !14)<br class="gmail_msg">
+!50 = !DILocalVariable(name: "_cmd", arg: 2, scope:
!14, type: !51, flags: DIFlagArtificial)<br class="gmail_msg">
+!51 = !DIDerivedType(tag: DW_TAG_typedef, name:
"SEL", file: !1, baseType: !27)<br class="gmail_msg">
+!52 = !DILocation(line: 17, column: 21, scope: !14)<br class="gmail_msg">
+!53 = !DILocation(line: 17, column: 20, scope: !14)<br class="gmail_msg">
+!54 = !DILocation(line: 18, column: 11, scope: !14)<br class="gmail_msg">
+!55 = !DILocation(line: 18, column: 10, scope: !14)<br class="gmail_msg">
+!56 = !DILocation(line: 19, column: 1, scope: !14)<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a moz-do-not-send="true" href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<br class="">
<fieldset class="mimeAttachmentHeader"></fieldset>
<br class="">
<pre wrap="" class="">_______________________________________________
llvm-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a>
</pre>
</blockquote>
<br class="">
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</div>
</div></blockquote></div><br class=""></body></html>