[mythtv] dynamic_cast generated code
Mark Spieth
mark at digivation.com.au
Mon Jan 27 22:54:37 UTC 2020
On 28/01/2020 9:24 am, Peter Bennett wrote:
> Hi Mark
>
> Does this help?
> It calls a function __dynamic_cast and puts the result in sp #120
> which must be the location of dce. I can't see what __dynamic_cast is
> doing.
>
> Peter
>
> _the source_
>
> 795 void StandardSettingDialog::customEvent(QEvent *event)
> 796 {
> 797 if (event->type() == DialogCompletionEvent::kEventType)
> 798 {
> 799 auto dce = dynamic_cast<DialogCompletionEvent*>(event);
> 800 if (dce == nullptr)
> 801 return;
>
> _the assembler from -S option_
>
> .text
> .globl _ZN21StandardSettingDialog11customEventEP6QEvent // --
> Begin function _ZN21StandardSettingDialog11customEventEP6QEvent
> .p2align 2
> .type _ZN21StandardSettingDialog11customEventEP6QEvent, at function
> _ZN21StandardSettingDialog11customEventEP6QEvent: //
> @_ZN21StandardSettingDialog11customEventEP6QEvent
> .Lfunc_begin167:
> .loc 68 796 0 is_stmt 1 // standardsettings.cpp:796:0
> .cfi_startproc
> .cfi_personality 156, DW.ref.__gxx_personality_v0
> .cfi_lsda 28, .Lexception51
> // %bb.0:
> sub sp, sp, #192 // =192
> str x30, [sp, #176] // 8-byte Folded Spill
> .cfi_def_cfa_offset 192
> .cfi_offset w30, -16
> mrs x8, TPIDR_EL0
> ldr x8, [x8, #40]
> str x8, [sp, #168]
> str x0, [sp, #136]
> str x1, [sp, #128]
> ldr x8, [sp, #136]
> .Ltmp2139:
> .loc 68 797 9 prologue_end // standardsettings.cpp:797:9
> ldr x0, [sp, #128]
> str x8, [sp, #72] // 8-byte Folded Spill
> .loc 68 797 16 is_stmt 0 // standardsettings.cpp:797:16
> bl _ZNK6QEvent4typeEv
> .loc 68 797 26 // standardsettings.cpp:797:26
> adrp x8, :got:_ZN21DialogCompletionEvent10kEventTypeE
> ldr x8, [x8,
> :got_lo12:_ZN21DialogCompletionEvent10kEventTypeE]
> ldr w9, [x8]
> .Ltmp2140:
> .loc 68 797 9 // standardsettings.cpp:797:9
> subs w9, w0, w9
> b.ne .LBB167_42
> b .LBB167_1
> .LBB167_1:
> .Ltmp2141:
> .loc 68 799 57 is_stmt 1 // standardsettings.cpp:799:57
> ldr x8, [sp, #128]
> mov x0, x8
> str x0, [sp, #64] // 8-byte Folded Spill
> .loc 68 799 20 is_stmt 0 // standardsettings.cpp:799:20
> cbz x8, .LBB167_3
> b .LBB167_2
> .LBB167_2:
> adrp x1, :got:_ZTI6QEvent
> ldr x1, [x1, :got_lo12:_ZTI6QEvent]
> adrp x2, :got:_ZTI21DialogCompletionEvent
> ldr x2, [x2, :got_lo12:_ZTI21DialogCompletionEvent]
> mov x0, xzr
> ldr x3, [sp, #64] // 8-byte Folded Reload
> str x0, [sp, #56] // 8-byte Folded Spill
> mov x0, x3
> ldr x3, [sp, #56] // 8-byte Folded Reload
> bl __dynamic_cast
> str x0, [sp, #48] // 8-byte Folded Spill
> b .LBB167_4
> .LBB167_3:
> .loc 68 0 20 // standardsettings.cpp:0:20
> mov x0, xzr
> str x0, [sp, #48] // 8-byte Folded Spill
> .loc 68 799 20 // standardsettings.cpp:799:20
> b .LBB167_4
> .LBB167_4:
> .loc 68 0 20 // standardsettings.cpp:0:20
> ldr x8, [sp, #48] // 8-byte Folded Reload
> .loc 68 799 14 // standardsettings.cpp:799:14
> str x8, [sp, #120]
> .Ltmp2142:
> .loc 68 800 13 is_stmt 1 // standardsettings.cpp:800:13
> ldr x8, [sp, #120]
> .Ltmp2143:
> .loc 68 800 13 is_stmt 0 // standardsettings.cpp:800:13
> cbnz x8, .LBB167_6
> b .LBB167_5
> .LBB167_5:
> .Ltmp2144:
>
Thats not very enlightening except that it does call it.
Its probably provided in shared-c++.so.
The problem is probably in Qt then and the way it links with our stuff.
Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-dev/attachments/20200128/ce7037bd/attachment.htm>
More information about the mythtv-dev
mailing list