; RUN: opt < %s -inline -S | not grep {invoke void asm}
; PR1335

target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
target triple = "i686-pc-linux-gnu"
	%struct.gnat__strings__string_access = type { i8*, %struct.string___XUB* }
	%struct.string___XUB = type { i32, i32 }

define void @bc__support__high_resolution_time__clock() {
entry:
	call void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null ) nounwind
	unreachable
}

define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() {
entry:
	invoke void @gnat__os_lib__getenv( %struct.gnat__strings__string_access* null )
			to label %invcont unwind label %cleanup144

invcont:		; preds = %entry
	invoke void @ada__calendar__delays__delay_for( )
			to label %invcont64 unwind label %cleanup144

invcont64:		; preds = %invcont
	invoke void @ada__calendar__clock( )
			to label %invcont65 unwind label %cleanup144

invcont65:		; preds = %invcont64
	invoke void @bc__support__high_resolution_time__clock( )
			to label %invcont67 unwind label %cleanup144

invcont67:		; preds = %invcont65
	ret void

cleanup144:		; preds = %invcont65, %invcont64, %invcont, %entry
        %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
                 cleanup
	resume { i8*, i32 } %exn
}

declare i32 @__gxx_personality_v0(...)

declare void @gnat__os_lib__getenv(%struct.gnat__strings__string_access*)

declare void @ada__calendar__delays__delay_for()

declare void @ada__calendar__clock()

define void @bc__support__high_resolution_time___elabb() {
entry:
	call fastcc void @bc__support__high_resolution_time__initialize_clock_rate( )
	ret void
}
