1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine | llvm-dis 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; This used to crash trying to do a double-to-pointer conversion 4*9880d681SAndroid Build Coastguard Workerdefine i32 @bar() { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker %retval = alloca i32, align 4 ; <i32*> [#uses=1] 7*9880d681SAndroid Build Coastguard Worker %tmp = call i32 (...) bitcast (i32 (i8*)* @f to i32 (...)*)( double 3.000000e+00 ) ; <i32> [#uses=0] 8*9880d681SAndroid Build Coastguard Worker br label %return 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 11*9880d681SAndroid Build Coastguard Worker %retval1 = load i32, i32* %retval ; <i32> [#uses=1] 12*9880d681SAndroid Build Coastguard Worker ret i32 %retval1 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine i32 @f(i8* %p) { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %p_addr = alloca i8* ; <i8**> [#uses=1] 18*9880d681SAndroid Build Coastguard Worker %retval = alloca i32, align 4 ; <i32*> [#uses=1] 19*9880d681SAndroid Build Coastguard Worker store i8* %p, i8** %p_addr 20*9880d681SAndroid Build Coastguard Worker br label %return 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry 23*9880d681SAndroid Build Coastguard Worker %retval1 = load i32, i32* %retval ; <i32> [#uses=1] 24*9880d681SAndroid Build Coastguard Worker ret i32 %retval1 25*9880d681SAndroid Build Coastguard Worker} 26