@ RUN: %cxx %flags %link_flags %s -o %t.exe
@ RUN: %t.exe
@ UNSUPPORTED: libcxxabi-no-exceptions

@ PURPOSE: Check that 0x90 is a valid value for ttype encoding.

@ NOTE:
@
@ This file is generated from the following C++ source code and then change the
@ `TType Encoding` to 0x90.
@
@ ```
@ int main() {
@   try {
@     throw 5;
@   } catch (int i) {
@     if (i != 5)
@       abort();
@     return 0;
@   }
@ }
@ ```

	.syntax unified

	.text
	.globl	main
	.p2align	2
	.type	main,%function
main:                                   @ @main
.Lfunc_begin0:
	.fnstart
@ BB#0:                                 @ %entry
	.save	{r11, lr}
	push	{r11, lr}
	.setfp	r11, sp
	mov	r11, sp
	mov	r0, #4
	bl	__cxa_allocate_exception
	mov	r1, #5
	str	r1, [r0]
.Ltmp0:
	ldr	r1, .LCPI0_0
	mov	r2, #0
	bl	__cxa_throw
.Ltmp1:

@ BB#2:                                 @ %lpad
.Ltmp2:
	bl	__cxa_begin_catch
	ldr	r0, [r0]
	cmp	r0, #5
	bne	.LBB0_4
@ BB#3:                                 @ %if.end
	bl	__cxa_end_catch
	mov	r0, #0
	pop	{r11, lr}
	bx	lr
.LBB0_4:                                @ %if.then
	bl	abort
	.p2align	2
@ BB#5:
.LCPI0_0:
	.long	_ZTIi
.Lfunc_end0:

	.size	main, .Lfunc_end0-main
	.globl	__gxx_personality_v0
	.personality __gxx_personality_v0
	.handlerdata
	.p2align	2
GCC_except_table0:
.Lexception0:
	.byte	255                     @ @LPStart Encoding = omit
	.byte	0x90                    @ @TType Encoding = indirect | pcrel
	.asciz	"\257\200"              @ @TType base offset
	.byte	3                       @ Call site Encoding = udata4
	.byte	39                      @ Call site table length
	.long	.Lfunc_begin0-.Lfunc_begin0 @ >> Call Site 1 <<
	.long	.Ltmp0-.Lfunc_begin0    @   Call between .Lfunc_begin0 and .Ltmp0
	.long	0                       @     has no landing pad
	.byte	0                       @   On action: cleanup
	.long	.Ltmp0-.Lfunc_begin0    @ >> Call Site 2 <<
	.long	.Ltmp1-.Ltmp0           @   Call between .Ltmp0 and .Ltmp1
	.long	.Ltmp2-.Lfunc_begin0    @     jumps to .Ltmp2
	.byte	1                       @   On action: 1
	.long	.Ltmp1-.Lfunc_begin0    @ >> Call Site 3 <<
	.long	.Lfunc_end0-.Ltmp1      @   Call between .Ltmp1 and .Lfunc_end0
	.long	0                       @     has no landing pad
	.byte	0                       @   On action: cleanup
	.byte	1                       @ >> Action Record 1 <<
                                        @   Catch TypeInfo 1
	.byte	0                       @   No further actions
                                        @ >> Catch TypeInfos <<
	.long	_ZTIi(target2)          @ TypeInfo 1
	.p2align	2
	.fnend
