mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-01 04:29:57 +00:00
helper functions. This can be optimized out later when the remaining parts of the helper function work is moved into the Mips16HardFloat pass. For now it forces us to use the 32 bit save/restore instructions instead of the 16 bit ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187712 91177308-0d34-0410-b5e6-96231b3b80d8
33 lines
1014 B
LLVM
33 lines
1014 B
LLVM
; RUN: llc -march=mipsel -mcpu=mips16 -relocation-model=pic -O3 < %s | FileCheck %s -check-prefix=16
|
|
|
|
@.str = private unnamed_addr constant [6 x i8] c"hello\00", align 1
|
|
@_ZTIPKc = external constant i8*
|
|
|
|
define i32 @main() {
|
|
; 16-LABEL: main:
|
|
; 16: .cfi_startproc
|
|
; 16: save $ra, $s0, $s1, $s2, 40
|
|
; 16: .cfi_def_cfa_offset 40
|
|
; 16: .cfi_offset 18, -8
|
|
; 16: .cfi_offset 17, -12
|
|
; 16: .cfi_offset 16, -16
|
|
; 16: .cfi_offset 31, -4
|
|
; 16: .cfi_endproc
|
|
entry:
|
|
%retval = alloca i32, align 4
|
|
store i32 0, i32* %retval
|
|
%exception = call i8* @__cxa_allocate_exception(i32 4) nounwind
|
|
%0 = bitcast i8* %exception to i8**
|
|
store i8* getelementptr inbounds ([6 x i8]* @.str, i32 0, i32 0), i8** %0
|
|
call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIPKc to i8*), i8* null) noreturn
|
|
unreachable
|
|
|
|
return: ; No predecessors!
|
|
%1 = load i32* %retval
|
|
ret i32 %1
|
|
}
|
|
|
|
declare i8* @__cxa_allocate_exception(i32)
|
|
|
|
declare void @__cxa_throw(i8*, i8*, i8*)
|