Created attachment 189856 [details] src/message.c (compressed, preprocessed) cc -W `pkg-config --cflags libDesktop` -Wall -g -O2 -pedantic -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-all -o message.o -c message.c # Machine code for function message_set_header_value: NoPHIs, TracksLiveness Frame Objects: fi#0: size=4, align=4, at location [SP] Function Live Ins: %r0 in %18, %r1 in %19, %r2 in %20 %bb.0: derived from LLVM BB %entry Live Ins: %r0 %r1 %r2 DBG_VALUE debug-use %r0, debug-use %noreg, !"message", !DIExpression(); line no:310 DBG_VALUE debug-use %r1, debug-use %noreg, !"header", !DIExpression(); line no:310 DBG_VALUE debug-use %r2, debug-use %noreg, !"value", !DIExpression(); line no:311 DBG_VALUE debug-use %r2, debug-use %noreg, !"value", !DIExpression(); line no:556 inlined @[ message.c:342:10 ] DBG_VALUE debug-use %r1, debug-use %noreg, !"header", !DIExpression(); line no:555 inlined @[ message.c:338:6 ] DBG_VALUE debug-use %r2, debug-use %noreg, !"value", !DIExpression(); line no:556 inlined @[ message.c:338:6 ] %20:gpr = COPY killed %r2; GPR:%20 DBG_VALUE debug-use %20, debug-use %noreg, !"value", !DIExpression(); GPR:%20 line no:311 DBG_VALUE debug-use %20, debug-use %noreg, !"value", !DIExpression(); GPR:%20 line no:556 inlined @[ message.c:342:10 ] DBG_VALUE debug-use %20, debug-use %noreg, !"value", !DIExpression(); GPR:%20 line no:556 inlined @[ message.c:338:6 ] %19:gpr = COPY killed %r1; GPR:%19 DBG_VALUE debug-use %19, debug-use %noreg, !"header", !DIExpression(); GPR:%19 line no:310 DBG_VALUE debug-use %19, debug-use %noreg, !"header", !DIExpression(); GPR:%19 line no:555 inlined @[ message.c:338:6 ] %18:gpr = COPY killed %r0; GPR:%18 DBG_VALUE debug-use %18, debug-use %noreg, !"message", !DIExpression(); GPR:%18 line no:310 %22:gpr = LDRLIT_ga_pcrel_ldr target-flags(<unknown>) @__stack_chk_guard; mem:LD4[GOT] GPR:%22 dbg:message.c:310:40 %23:gpr = LDRi12 %22, 0, pred:14, pred:%noreg; mem:Volatile LD4[@__stack_chk_guard] GPR:%23,%22 dbg:message.c:310:40 STRi12 %23, %stack.0.StackGuardSlot, 0, pred:14, pred:%noreg; mem:Volatile ST4[FixedStack0] GPR:%23 dbg:message.c:310:40 DBG_VALUE 0, debug-use %noreg, !"i", !DIExpression(); line no:313 DBG_VALUE 0, debug-use %noreg, !"i", !DIExpression(); line no:313 %0:gpr = LDRi12 %18, 16, pred:14, pred:%noreg; mem:LD4[%headers_cnt](tbaa=!311) GPR:%0,%18 dbg:message.c:322:26 %21:gpr = MOVi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%21 CMPri %0, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%0 dbg:message.c:322:2 %79:gpr = COPY %21; GPR:%79,%21 Bcc %bb.5, pred:0, pred:killed %cpsr; dbg:message.c:322:2 B %bb.1; dbg:message.c:322:2 Successors according to CFG: %bb.5(0x30000000 / 0x80000000 = 37.50%) %bb.1(0x50000000 / 0x80000000 = 62.50%) %bb.1: derived from LLVM BB %for.body.lr.ph Predecessors according to CFG: %bb.0 %1:gpr = LDRi12 %18, 12, pred:14, pred:%noreg; mem:LD4[%headers](tbaa=!311) GPR:%1,%18 %24:gpr = MOVi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%24 %77:gprnopc = COPY %24; GPRnopc:%77 GPR:%24 Successors according to CFG: %bb.2(?%) %bb.2: derived from LLVM BB %for.body Predecessors according to CFG: %bb.1 %bb.3 %2:gprnopc = COPY %77; GPRnopc:%2,%77 DBG_VALUE debug-use %2, debug-use %noreg, !"i", !DIExpression(); GPRnopc:%2 line no:313 %25:gpr = LDRrs %1, %2, 16387, pred:14, pred:%noreg; mem:LD4[%scevgep](tbaa=!542) GPR:%25,%1 GPRnopc:%2 dbg:message.c:323:33 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:323:6 %r0 = COPY %25; GPR:%25 dbg:message.c:323:6 %r1 = COPY %19; GPR:%19 dbg:message.c:323:6 BL @strcmp, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:323:6 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:323:6 %26:gpr = COPY %r0; GPR:%26 dbg:message.c:323:6 CMPri %26, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%26 dbg:message.c:323:6 Bcc %bb.3, pred:1, pred:killed %cpsr; dbg:message.c:323:6 Successors according to CFG: %bb.34(0x04000000 / 0x80000000 = 3.12%) %bb.3(0x7c000000 / 0x80000000 = 96.88%) %bb.34: Predecessors according to CFG: %bb.2 %78:gpr = COPY %2; GPR:%78 GPRnopc:%2 B %bb.4 Successors according to CFG: %bb.4(?%) %bb.3: derived from LLVM BB %for.inc Predecessors according to CFG: %bb.2 %3:gpr = ADDri %2, 1, pred:14, pred:%noreg, opt:%noreg; GPR:%3 GPRnopc:%2 dbg:message.c:322:40 DBG_VALUE debug-use %3, debug-use %noreg, !"i", !DIExpression(); GPR:%3 line no:313 CMPrr %3, %0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%3,%0 dbg:message.c:322:2 %77:gprnopc = COPY %3; GPRnopc:%77 GPR:%3 %78:gpr = COPY %3; GPR:%78,%3 Bcc %bb.2, pred:3, pred:killed %cpsr; dbg:message.c:322:2 B %bb.4; dbg:message.c:322:2 Successors according to CFG: %bb.2(0x7c000000 / 0x80000000 = 96.88%) %bb.4(0x04000000 / 0x80000000 = 3.12%) %bb.4: derived from LLVM BB %for.end Predecessors according to CFG: %bb.3 %bb.34 %4:gpr = COPY %78; GPR:%4,%78 CMPrr %4, %0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%4,%0 dbg:message.c:325:5 Bcc %bb.15, pred:1, pred:killed %cpsr; dbg:message.c:325:5 Successors according to CFG: %bb.35(0x40000000 / 0x80000000 = 50.00%) %bb.15(0x40000000 / 0x80000000 = 50.00%) %bb.35: Predecessors according to CFG: %bb.4 %79:gpr = COPY %4; GPR:%79,%4 Successors according to CFG: %bb.5(?%) %bb.5: derived from LLVM BB %if.then5 Predecessors according to CFG: %bb.0 %bb.35 %5:gpr = COPY %79; GPR:%5,%79 CMPri %20, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%20 dbg:message.c:328:6 %83:gpr = COPY %21; GPR:%83,%21 Bcc %bb.27, pred:0, pred:killed %cpsr; dbg:message.c:328:6 B %bb.6; dbg:message.c:328:6 Successors according to CFG: %bb.27(0x30000000 / 0x80000000 = 37.50%) %bb.6(0x50000000 / 0x80000000 = 62.50%) %bb.6: derived from LLVM BB %if.end8 Predecessors according to CFG: %bb.5 %33:gpr = MOVi 8, pred:14, pred:%noreg, opt:%noreg; GPR:%33 dbg:message.c:332:7 %34:gpr = ADDrsi %33, %5, 26, pred:14, pred:%noreg, opt:%noreg; GPR:%34,%33,%5 dbg:message.c:332:7 %35:gpr = LDRi12 %18, 12, pred:14, pred:%noreg; mem:LD4[%6](tbaa=!311) GPR:%35,%18 dbg:message.c:331:28 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:331:11 %r0 = COPY %35; GPR:%35 dbg:message.c:331:11 %r1 = COPY %34; GPR:%34 dbg:message.c:331:11 BL @realloc, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:331:11 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:331:11 %36:gpr = COPY %r0; GPR:%36 dbg:message.c:331:11 %32:gpr = MVNi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%32 CMPri %36, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%36 dbg:message.c:331:6 Bcc %bb.7, pred:1, pred:killed %cpsr; dbg:message.c:331:6 Successors according to CFG: %bb.36(0x30000000 / 0x80000000 = 37.50%) %bb.7(0x50000000 / 0x80000000 = 62.50%) %bb.36: Predecessors according to CFG: %bb.6 %83:gpr = COPY %32; GPR:%83,%32 B %bb.27 Successors according to CFG: %bb.27(?%) %bb.7: derived from LLVM BB %if.end14 Predecessors according to CFG: %bb.6 %6:gpr = COPY %36; GPR:%6,%36 %7:gprnopc = LDRi12 %18, 16, pred:14, pred:%noreg; mem:LD4[%12](tbaa=!311) GPRnopc:%7 GPR:%18 dbg:message.c:336:34 DBG_VALUE debug-use %6, debug-use %noreg, !"p", !DIExpression(); GPR:%6 line no:314 STRi12 %6, %18, 12, pred:14, pred:%noreg; mem:ST4[%10](tbaa=!311) GPR:%6,%18 dbg:message.c:335:20 %38:gpr = MOVi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%38 DBG_VALUE debug-use %8, debug-use %noreg, !"mh", !DIExpression(); GPR:%8 line no:555 inlined @[ message.c:338:6 ] DBG_VALUE debug-use %8, debug-use %noreg, !"p", !DIExpression(); GPR:%8 line no:314 DBG_VALUE debug-use %38, debug-use %noreg, !"v", !DIExpression(); GPR:%38 line no:560 inlined @[ message.c:338:6 ] %8:gpr = COPY %6; GPR:%8,%6 dbg:message.c:337:3 early-clobber %8:gpr = STR_PRE_REG %38, %8, %7, 16387, pred:14, pred:%noreg; GPR:%8,%38 GPRnopc:%7 dbg:message.c:337:3 DBG_VALUE 0, debug-use %noreg, !"ret", !DIExpression(); line no:558 inlined @[ message.c:338:6 ] STRi12 %38, %8, 4, pred:14, pred:%noreg; mem:ST4[%14+4] GPR:%38,%8 dbg:message.c:337:3 CMPri %19, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%19 dbg:message.c:562:20 @[ message.c:338:6 ] Bcc %bb.9, pred:1, pred:killed %cpsr; dbg:message.c:562:20 @[ message.c:338:6 ] Successors according to CFG: %bb.8(0x30000000 / 0x80000000 = 37.50%) %bb.9(0x50000000 / 0x80000000 = 62.50%) %bb.8: Predecessors according to CFG: %bb.7 %37:gpr = MOVi 1, pred:14, pred:%noreg, opt:%noreg; GPR:%37 %80:gpr = COPY %37; GPR:%80,%37 %81:gpr = COPY %38; GPR:%81,%38 B %bb.10 Successors according to CFG: %bb.10(?%) %bb.9: derived from LLVM BB %land.lhs.true.i Predecessors according to CFG: %bb.7 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:562:28 @[ message.c:338:6 ] %r0 = COPY %19; GPR:%19 dbg:message.c:562:28 @[ message.c:338:6 ] BL @strdup, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit-def %sp, implicit-def %r0; dbg:message.c:562:28 @[ message.c:338:6 ] ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:562:28 @[ message.c:338:6 ] %39:gpr = COPY %r0; GPR:%39 dbg:message.c:562:28 @[ message.c:338:6 ] DBG_VALUE debug-use %39, debug-use %noreg, !"h", !DIExpression(); GPR:%39 line no:559 inlined @[ message.c:338:6 ] CMPri %39, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%39 dbg:message.c:562:44 @[ message.c:338:6 ] %10:gpr = COPY %39; GPR:%10,%39 dbg:message.c:562:44 @[ message.c:338:6 ] %10:gpr = MOVCCi %10, 1, pred:1, pred:killed %cpsr; GPR:%10 dbg:message.c:562:44 @[ message.c:338:6 ] %9:gpr = COPY %39; GPR:%9,%39 dbg:message.c:562:28 @[ message.c:338:6 ] %80:gpr = COPY %10; GPR:%80,%10 %81:gpr = COPY %9; GPR:%81,%9 Successors according to CFG: %bb.10(?%) %bb.10: derived from LLVM BB %land.lhs.true3.i Predecessors according to CFG: %bb.9 %bb.8 %12:gpr = COPY %81; GPR:%12,%81 %11:gpr = COPY %80; GPR:%11,%80 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:564:27 @[ message.c:338:6 ] %r0 = COPY %20; GPR:%20 dbg:message.c:564:27 @[ message.c:338:6 ] BL @strdup, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit-def %sp, implicit-def %r0; dbg:message.c:564:27 @[ message.c:338:6 ] ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:564:27 @[ message.c:338:6 ] %41:gpr = COPY %r0; GPR:%41 dbg:message.c:564:27 @[ message.c:338:6 ] DBG_VALUE debug-use %41, debug-use %noreg, !"v", !DIExpression(); GPR:%41 line no:560 inlined @[ message.c:338:6 ] DBG_VALUE debug-use %41, debug-use %noreg, !"v", !DIExpression(); GPR:%41 line no:560 inlined @[ message.c:338:6 ] CMPri %11, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%11 Bcc %bb.11, pred:1, pred:killed %cpsr Successors according to CFG: %bb.11(0x60000000 / 0x80000000 = 75.00%) %bb.37(0x20000000 / 0x80000000 = 25.00%) %bb.37: Predecessors according to CFG: %bb.10 %83:gpr = COPY %32; GPR:%83,%32 B %bb.27 Successors according to CFG: %bb.27(?%) %bb.11: derived from LLVM BB %land.lhs.true3.i Predecessors according to CFG: %bb.10 CMPri %41, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%41 %83:gpr = COPY %32; GPR:%83,%32 Bcc %bb.27, pred:0, pred:killed %cpsr B %bb.12 Successors according to CFG: %bb.12(0x55555555 / 0x80000000 = 66.67%) %bb.27(0x2aaaaaab / 0x80000000 = 33.33%) %bb.12: derived from LLVM BB %if.end11.i Predecessors according to CFG: %bb.11 %13:gpr = COPY %41; GPR:%13,%41 DBG_VALUE debug-use %12, debug-use %noreg, !"h", !DIExpression(); GPR:%12 line no:559 inlined @[ message.c:338:6 ] CMPri %12, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%12 dbg:message.c:568:5 @[ message.c:338:6 ] Bcc %bb.14, pred:0, pred:killed %cpsr; dbg:message.c:568:5 @[ message.c:338:6 ] B %bb.13; dbg:message.c:568:5 @[ message.c:338:6 ] Successors according to CFG: %bb.14(0x30000000 / 0x80000000 = 37.50%) %bb.13(0x50000000 / 0x80000000 = 62.50%) %bb.13: derived from LLVM BB %if.then13.i Predecessors according to CFG: %bb.12 %42:gpr = LDRi12 %8, 0, pred:14, pred:%noreg; mem:LD4[%header14.i130](tbaa=!542) GPR:%42,%8 dbg:message.c:570:12 @[ message.c:338:6 ] ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:570:3 @[ message.c:338:6 ] %r0 = COPY %42; GPR:%42 dbg:message.c:570:3 @[ message.c:338:6 ] BL @free, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit-def %sp; dbg:message.c:570:3 @[ message.c:338:6 ] ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:570:3 @[ message.c:338:6 ] STRi12 %12, %8, 0, pred:14, pred:%noreg; mem:ST4[%header14.i130](tbaa=!542) GPR:%12,%8 dbg:message.c:571:14 @[ message.c:338:6 ] Successors according to CFG: %bb.14(?%) %bb.14: derived from LLVM BB %if.end22 Predecessors according to CFG: %bb.12 %bb.13 %43:gpr = ADDrsi %36, %7, 26, pred:14, pred:%noreg, opt:%noreg; GPR:%43,%36 GPRnopc:%7 dbg:message.c:575:12 @[ message.c:338:6 ] %44:gpr = LDRi12 %43, 4, pred:14, pred:%noreg; mem:LD4[%value19.i](tbaa=!542) GPR:%44,%43 dbg:message.c:575:12 @[ message.c:338:6 ] ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:575:3 @[ message.c:338:6 ] %r0 = COPY %44; GPR:%44 dbg:message.c:575:3 @[ message.c:338:6 ] BL @free, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit-def %sp; dbg:message.c:575:3 @[ message.c:338:6 ] ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:575:3 @[ message.c:338:6 ] STRi12 %13, %43, 4, pred:14, pred:%noreg; mem:ST4[%value19.i](tbaa=!542) GPR:%13,%43 dbg:message.c:576:13 @[ message.c:338:6 ] %45:gpr = LDRi12 %18, 16, pred:14, pred:%noreg; mem:LD4[%19](tbaa=!311) GPR:%45,%18 dbg:message.c:340:23 %46:gpr = ADDri %45, 1, pred:14, pred:%noreg, opt:%noreg; GPR:%46,%45 dbg:message.c:340:23 STRi12 %46, %18, 16, pred:14, pred:%noreg; mem:ST4[%19](tbaa=!311) GPR:%46,%18 dbg:message.c:340:23 B %bb.19; dbg:message.c:341:2 Successors according to CFG: %bb.19(?%) %bb.15: derived from LLVM BB %if.else Predecessors according to CFG: %bb.4 DBG_VALUE 0, debug-use %noreg, !"ret", !DIExpression(); line no:558 inlined @[ message.c:342:10 ] DBG_VALUE 0, debug-use %noreg, !"ret", !DIExpression(); line no:558 inlined @[ message.c:342:10 ] CMPri %20, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%20 dbg:message.c:564:19 @[ message.c:342:10 ] Bcc %bb.19, pred:0, pred:killed %cpsr; dbg:message.c:564:19 @[ message.c:342:10 ] B %bb.16; dbg:message.c:564:19 @[ message.c:342:10 ] Successors according to CFG: %bb.19(0x30000000 / 0x80000000 = 37.50%) %bb.16(0x50000000 / 0x80000000 = 62.50%) %bb.16: derived from LLVM BB %land.lhs.true3.i98 Predecessors according to CFG: %bb.15 %14:gpr = LDRi12 %18, 12, pred:14, pred:%noreg; mem:LD4[%headers25](tbaa=!311) GPR:%14,%18 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:564:27 @[ message.c:342:10 ] %r0 = COPY %20; GPR:%20 dbg:message.c:564:27 @[ message.c:342:10 ] BL @strdup, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit-def %sp, implicit-def %r0; dbg:message.c:564:27 @[ message.c:342:10 ] ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:564:27 @[ message.c:342:10 ] %28:gpr = COPY %r0; GPR:%28 dbg:message.c:564:27 @[ message.c:342:10 ] DBG_VALUE debug-use %28, debug-use %noreg, !"v", !DIExpression(); GPR:%28 line no:560 inlined @[ message.c:342:10 ] DBG_VALUE debug-use %28, debug-use %noreg, !"v", !DIExpression(); GPR:%28 line no:560 inlined @[ message.c:342:10 ] CMPri %28, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%28 Bcc %bb.18, pred:1, pred:killed %cpsr Successors according to CFG: %bb.17(0x30000000 / 0x80000000 = 37.50%) %bb.18(0x50000000 / 0x80000000 = 62.50%) %bb.17: Predecessors according to CFG: %bb.16 %27:gpr = MVNi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%27 %83:gpr = COPY %27; GPR:%83,%27 B %bb.27 Successors according to CFG: %bb.27(?%) %bb.18: derived from LLVM BB %if.then18.i109 Predecessors according to CFG: %bb.16 %15:gpr = COPY %28; GPR:%15,%28 DBG_VALUE 0, debug-use %noreg, !"ret", !DIExpression(); line no:558 inlined @[ message.c:342:10 ] %29:gpr = ADDrsi %14, %4, 26, pred:14, pred:%noreg, opt:%noreg; GPR:%29,%14,%4 dbg:message.c:575:12 @[ message.c:342:10 ] %30:gpr = LDRi12 %29, 4, pred:14, pred:%noreg; mem:LD4[%value19.i108](tbaa=!542) GPR:%30,%29 dbg:message.c:575:12 @[ message.c:342:10 ] ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:575:3 @[ message.c:342:10 ] %r0 = COPY %30; GPR:%30 dbg:message.c:575:3 @[ message.c:342:10 ] BL @free, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit-def %sp; dbg:message.c:575:3 @[ message.c:342:10 ] ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:575:3 @[ message.c:342:10 ] STRi12 %15, %29, 4, pred:14, pred:%noreg; mem:ST4[%value19.i108](tbaa=!542) GPR:%15,%29 dbg:message.c:576:13 @[ message.c:342:10 ] Successors according to CFG: %bb.19(?%) %bb.19: derived from LLVM BB %if.end31 Predecessors according to CFG: %bb.15 %bb.18 %bb.14 DBG_VALUE 0, debug-use %noreg, !"i", !DIExpression(); line no:313 DBG_VALUE 0, debug-use %noreg, !"i", !DIExpression(); line no:313 %48:gpr = LDRLIT_ga_pcrel @.str.9; GPR:%48 dbg:message.c:347:6 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %r0 = COPY %48; GPR:%48 dbg:message.c:347:6 %r1 = COPY %19; GPR:%19 dbg:message.c:347:6 BL @strcmp, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:347:6 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %49:gpr = COPY %r0; GPR:%49 dbg:message.c:347:6 CMPri %49, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%49 dbg:message.c:347:6 Bcc %bb.25, pred:1, pred:killed %cpsr; dbg:message.c:347:6 Successors according to CFG: %bb.20(0x30000000 / 0x80000000 = 37.50%) %bb.25(0x50000000 / 0x80000000 = 62.50%) %bb.20: Predecessors according to CFG: %bb.19 %47:gpr = MOVi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%47 %82:gpr = COPY %47; GPR:%82,%47 B %bb.22 Successors according to CFG: %bb.22(?%) %bb.21: derived from LLVM BB %if.then46 Predecessors according to CFG: %bb.31 DBG_VALUE 4, debug-use %noreg, !"column", !DIExpression(); line no:315 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:350:4 %63:gpr = MOVi 4, pred:14, pred:%noreg, opt:%noreg; GPR:%63 dbg:message.c:350:4 %64:gpr = MVNi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%64 dbg:message.c:350:4 %r0 = COPY %18; GPR:%18 dbg:message.c:350:4 %r1 = COPY %63; GPR:%63 dbg:message.c:350:4 %r2 = COPY %20; GPR:%20 dbg:message.c:350:4 %r3 = COPY %64; GPR:%64 dbg:message.c:350:4 BL_pred @_message_set, pred:14, pred:%noreg, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit killed %r2, implicit killed %r3, implicit-def %sp; dbg:message.c:350:4 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:350:4 %62:gpr = MOVi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%62 %83:gpr = COPY %62; GPR:%83,%62 B %bb.27; dbg:message.c:351:6 Successors according to CFG: %bb.27(?%) %bb.22: derived from LLVM BB %if.end52 Predecessors according to CFG: %bb.20 %bb.26 %bb.30 %bb.33 %16:gpr = COPY %82; GPR:%16,%82 DBG_VALUE 4, debug-use %noreg, !"column", !DIExpression(); line no:315 %70:gpr = LDRi12 %22, 0, pred:14, pred:%noreg; mem:Volatile LD4[@__stack_chk_guard] GPR:%70,%22 %71:gpr = LDRi12 %stack.0.StackGuardSlot, 0, pred:14, pred:%noreg; mem:Volatile LD4[FixedStack0] GPR:%71 dead %72:gpr = SUBrr %70, %71, pred:14, pred:%noreg, opt:def %cpsr; GPR:%72,%70,%71 Bcc %bb.23, pred:1, pred:killed %cpsr B %bb.24 Successors according to CFG: %bb.24(0x7ffff800 / 0x80000000 = 100.00%) %bb.23(0x00000800 / 0x80000000 = 0.00%) %bb.23: derived from LLVM BB %if.end52 Predecessors according to CFG: %bb.22 %bb.27 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp BL $__stack_chk_fail, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit-def %sp ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp %bb.24: derived from LLVM BB %if.end52 Predecessors according to CFG: %bb.22 %65:gpr = ADDrsi %16, %16, 10, pred:14, pred:%noreg, opt:%noreg; GPR:%65,%16,%16 %66:gpr = LDRLIT_ga_pcrel @_message_columns; GPR:%66 %67:gpr = ADDrsi %66, %65, 18, pred:14, pred:%noreg, opt:%noreg; GPR:%67,%66,%65 %68:tcgpr = LDRi12 %67, 8, pred:14, pred:%noreg; mem:LD4[%callback](tbaa=!829) tcGPR:%68 GPR:%67 TCRETURNri %68, implicit %sp, implicit %r0, implicit killed %r1; tcGPR:%68 dbg:message.c:353:10 %bb.25: derived from LLVM BB %for.inc56 Predecessors according to CFG: %bb.19 DBG_VALUE 1, debug-use %noreg, !"i", !DIExpression(); line no:313 DBG_VALUE 1, debug-use %noreg, !"i", !DIExpression(); line no:313 %51:gpr = LDRLIT_ga_pcrel @.str.10; GPR:%51 dbg:message.c:347:6 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %r0 = COPY %51; GPR:%51 dbg:message.c:347:6 %r1 = COPY %19; GPR:%19 dbg:message.c:347:6 BL @strcmp, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:347:6 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %52:gpr = COPY %r0; GPR:%52 dbg:message.c:347:6 CMPri %52, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%52 dbg:message.c:347:6 Bcc %bb.29, pred:1, pred:killed %cpsr; dbg:message.c:347:6 Successors according to CFG: %bb.26(0x30000000 / 0x80000000 = 37.50%) %bb.29(0x50000000 / 0x80000000 = 62.50%) %bb.26: Predecessors according to CFG: %bb.25 %50:gpr = MOVi 1, pred:14, pred:%noreg, opt:%noreg; GPR:%50 %82:gpr = COPY %50; GPR:%82,%50 B %bb.22 Successors according to CFG: %bb.22(?%) %bb.27: derived from LLVM BB %cleanup Predecessors according to CFG: %bb.5 %bb.11 %bb.32 %bb.21 %bb.17 %bb.36 %bb.37 %17:gpr = COPY %83; GPR:%17,%83 %74:gpr = LDRi12 %22, 0, pred:14, pred:%noreg; mem:Volatile LD4[@__stack_chk_guard] GPR:%74,%22 %75:gpr = LDRi12 %stack.0.StackGuardSlot, 0, pred:14, pred:%noreg; mem:Volatile LD4[FixedStack0] GPR:%75 dead %76:gpr = SUBrr %74, %75, pred:14, pred:%noreg, opt:def %cpsr; GPR:%76,%74,%75 Bcc %bb.23, pred:1, pred:killed %cpsr B %bb.28 Successors according to CFG: %bb.28(0x7ffff800 / 0x80000000 = 100.00%) %bb.23(0x00000800 / 0x80000000 = 0.00%) %bb.28: derived from LLVM BB %cleanup Predecessors according to CFG: %bb.27 %r0 = COPY %17; GPR:%17 dbg:message.c:356:1 BX_RET pred:14, pred:%noreg, implicit killed %r0; dbg:message.c:356:1 %bb.29: derived from LLVM BB %for.inc56.1 Predecessors according to CFG: %bb.25 DBG_VALUE 2, debug-use %noreg, !"i", !DIExpression(); line no:313 DBG_VALUE 2, debug-use %noreg, !"i", !DIExpression(); line no:313 %54:gpr = LDRLIT_ga_pcrel @.str.4; GPR:%54 dbg:message.c:347:6 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %r0 = COPY %54; GPR:%54 dbg:message.c:347:6 %r1 = COPY %19; GPR:%19 dbg:message.c:347:6 BL @strcmp, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:347:6 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %55:gpr = COPY %r0; GPR:%55 dbg:message.c:347:6 CMPri %55, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%55 dbg:message.c:347:6 Bcc %bb.31, pred:1, pred:killed %cpsr; dbg:message.c:347:6 Successors according to CFG: %bb.30(0x30000000 / 0x80000000 = 37.50%) %bb.31(0x50000000 / 0x80000000 = 62.50%) %bb.30: Predecessors according to CFG: %bb.29 %53:gpr = MOVi 2, pred:14, pred:%noreg, opt:%noreg; GPR:%53 %82:gpr = COPY %53; GPR:%82,%53 B %bb.22 Successors according to CFG: %bb.22(?%) %bb.31: derived from LLVM BB %for.inc56.2 Predecessors according to CFG: %bb.29 DBG_VALUE 3, debug-use %noreg, !"i", !DIExpression(); line no:313 DBG_VALUE 3, debug-use %noreg, !"i", !DIExpression(); line no:313 %56:gpr = LDRLIT_ga_pcrel @.str.11; GPR:%56 dbg:message.c:347:6 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %r0 = COPY %56; GPR:%56 dbg:message.c:347:6 %r1 = COPY %19; GPR:%19 dbg:message.c:347:6 BL @strcmp, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:347:6 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %57:gpr = COPY %r0; GPR:%57 dbg:message.c:347:6 CMPri %57, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%57 dbg:message.c:347:6 Bcc %bb.21, pred:0, pred:killed %cpsr; dbg:message.c:347:6 B %bb.32; dbg:message.c:347:6 Successors according to CFG: %bb.21(0x30000000 / 0x80000000 = 37.50%) %bb.32(0x50000000 / 0x80000000 = 62.50%) %bb.32: derived from LLVM BB %for.inc56.3 Predecessors according to CFG: %bb.31 DBG_VALUE 4, debug-use %noreg, !"i", !DIExpression(); line no:313 DBG_VALUE 4, debug-use %noreg, !"i", !DIExpression(); line no:313 %60:gpr = LDRLIT_ga_pcrel @.str.12; GPR:%60 dbg:message.c:347:6 ADJCALLSTACKDOWN 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %r0 = COPY %60; GPR:%60 dbg:message.c:347:6 %r1 = COPY %19; GPR:%19 dbg:message.c:347:6 BL @strcmp, <regmask %lr %d8 %d9 %d10 %d11 %d12 %d13 %d14 %d15 %q4 %q5 %q6 %q7 %r4 %r5 %r6 %r7 %r8 %r9 %r10 %r11 %s16 %s17 %s18 %s19 %s20 %s21 %s22 %s23 %s24 %s25 %s26 %s27 and 35 more...>, implicit-def dead %lr, implicit %sp, implicit %r0, implicit killed %r1, implicit-def %sp, implicit-def %r0; dbg:message.c:347:6 ADJCALLSTACKUP 0, 0, pred:14, pred:%noreg, implicit-def dead %sp, implicit %sp; dbg:message.c:347:6 %61:gpr = COPY %r0; GPR:%61 dbg:message.c:347:6 %59:gpr = MOVi 0, pred:14, pred:%noreg, opt:%noreg; GPR:%59 CMPri %61, 0, pred:14, pred:%noreg, implicit-def %cpsr; GPR:%61 dbg:message.c:347:6 %83:gpr = COPY %59; GPR:%83,%59 Bcc %bb.27, pred:1, pred:killed %cpsr; dbg:message.c:347:6 Successors according to CFG: %bb.33(0x30000000 / 0x80000000 = 37.50%) %bb.27(0x50000000 / 0x80000000 = 62.50%) %bb.33: Predecessors according to CFG: %bb.32 %58:gpr = MOVi 4, pred:14, pred:%noreg, opt:%noreg; GPR:%58 %82:gpr = COPY %58; GPR:%82,%58 B %bb.22 Successors according to CFG: %bb.22(?%) # End machine code for function message_set_header_value. *** Bad machine code: Using an undefined physical register *** - function: message_set_header_value - basic block: %bb.24 if.end52 (0xf53bf9e0) - instruction: TCRETURNri - operand 2: implicit %r0 *** Bad machine code: Using an undefined physical register *** - function: message_set_header_value - basic block: %bb.24 if.end52 (0xf53bf9e0) - instruction: TCRETURNri - operand 3: implicit killed %r1 fatal error: error in backend: Found 2 machine code errors. cc: error: clang frontend command failed with exit code 70 (use -v to see invocation) FreeBSD clang version 6.0.0 (branches/release_60 321788) (based on LLVM 6.0.0) Target: armv6-unknown-freebsd12.0-gnueabihf Thread model: posix InstalledDir: /usr/bin http://beefy8.nyi.freebsd.org/data/head-armv6-default/p459021_s327977/logs/deforaos-mailer-0.1.7.log
Created attachment 189857 [details] command line args (for clang 6.0)
Doh, I didn't notice Clang 5.0 was also crashing: http://beefy8.nyi.freebsd.org/data/head-armv6-default/p458501_s327711/logs/errors/deforaos-mailer-0.1.7.log
Earlier Clang versions didn't crash on this port. http://beefy15.nyi.freebsd.org/data/latest-per-pkg/deforaos-mailer/0.1.7/110armv6-quarterly.log (Clang 3.8) http://beefy15.nyi.freebsd.org/data/latest-per-pkg/deforaos-mailer/0.1.7/111armv6-quarterly.log (Clang 4)
Bisecting shows this to have been introduced with https://reviews.llvm.org/rL203575 ("ARM: enable tail call optimisation on Thumb 2"). Since that is a very old commit, we seem to be hitting an edge case. I'll submit a PR upstream, but I would not get my hopes up :)
Submitted https://bugs.llvm.org/show_bug.cgi?id=36031. Note that tuning down the -fstack-protector setting from 3 (which means 'all') to 2 (e.g. 'strong') makes the crash go away. So maybe this can be used as a workaround.
(In reply to Dimitry Andric from comment #5) This is now tracked in https://github.com/llvm/llvm-project/issues/35379 instead. Unfortunately, it still seems to be open.
(In reply to Pierre Pronchery from comment #6) I can't reproduce the crash anymore with clang 19 from main, nor with any other clang version that I have. Seems to be solved.