| ; RUN: llc -mtriple=avr -verify-machineinstrs < %s | FileCheck %s |
| |
| ; The stack protector libcalls must be available on AVR. Lowering `sspreq` |
| ; needs both `__stack_chk_guard`, to load the canary, and `__stack_chk_fail`, |
| ; for the failure path. When either is missing from AVR's |
| ; SystemRuntimeLibrary, SelectionDAG reports "unable to lower stackguard" and |
| ; then dies in TargetLowering::makeLibCall with "unsupported library call |
| ; operation". |
| |
| define void @func() sspreq nounwind { |
| ; CHECK-LABEL: func: |
| ; CHECK: __stack_chk_guard |
| ; CHECK: __stack_chk_fail |
| %alloca = alloca i32, align 4 |
| call void @capture(ptr %alloca) |
| ret void |
| } |
| |
| declare void @capture(ptr) |