1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=avr --mcpu=atmega328 -O0 -verify-machineinstrs | FileCheck %s 3 4;; This .ll file is generated from the following cpp program: 5;; struct foo { 6;; foo(); 7;; }; 8;; foo::foo() {} 9;; foo f2; 10;; Check https://github.com/llvm/llvm-project/issues/43443 for details. 11 12%struct.foo = type { i8 } 13 14@f2 = global %struct.foo zeroinitializer 15 16@llvm.global_ctors = appending global [1 x { i32, ptr addrspace(1), ptr }] [{ i32, ptr addrspace(1), ptr } { i32 65535, ptr addrspace(1) @_GLOBAL__sub_I_failed.cc, ptr null }] 17 18@_ZN3fooC1Ev = alias void (ptr), ptr addrspace(1) @_ZN3fooC2Ev 19 20define void @_ZN3fooC2Ev(ptr dereferenceable(1) %this) { 21; CHECK-LABEL: _ZN3fooC2Ev: 22; CHECK: ; %bb.0: ; %entry 23; CHECK-NEXT: push r28 24; CHECK-NEXT: push r29 25; CHECK-NEXT: in r28, 61 26; CHECK-NEXT: in r29, 62 27; CHECK-NEXT: sbiw r28, 2 28; CHECK-NEXT: in r0, 63 29; CHECK-NEXT: cli 30; CHECK-NEXT: out 62, r29 31; CHECK-NEXT: out 63, r0 32; CHECK-NEXT: out 61, r28 33; CHECK-NEXT: std Y+2, r25 34; CHECK-NEXT: std Y+1, r24 35; CHECK-NEXT: adiw r28, 2 36; CHECK-NEXT: in r0, 63 37; CHECK-NEXT: cli 38; CHECK-NEXT: out 62, r29 39; CHECK-NEXT: out 63, r0 40; CHECK-NEXT: out 61, r28 41; CHECK-NEXT: pop r29 42; CHECK-NEXT: pop r28 43; CHECK-NEXT: ret 44entry: 45 %this.addr = alloca ptr 46 store ptr %this, ptr %this.addr 47 %this1 = load ptr, ptr %this.addr 48 ret void 49} 50 51define internal void @__cxx_global_var_init() addrspace(1) { 52; CHECK-LABEL: __cxx_global_var_init: 53; CHECK: ; %bb.0: ; %entry 54; CHECK-NEXT: ldi r24, lo8(f2) 55; CHECK-NEXT: ldi r25, hi8(f2) 56; CHECK-NEXT: call _ZN3fooC1Ev 57; CHECK-NEXT: ret 58entry: 59 call addrspace(1) void @_ZN3fooC1Ev(ptr dereferenceable(1) @f2) 60 ret void 61} 62 63define internal void @_GLOBAL__sub_I_failed.cc() addrspace(1) { 64; CHECK-LABEL: _GLOBAL__sub_I_failed.cc: 65; CHECK: ; %bb.0: ; %entry 66; CHECK-NEXT: call __cxx_global_var_init 67; CHECK-NEXT: ret 68entry: 69 call addrspace(1) void @__cxx_global_var_init() 70 ret void 71} 72