1*8b360c69SBin Cheng; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*8b360c69SBin Cheng; RUN: opt -function-specialization -force-function-specialization -func-specialization-on-address -S < %s | FileCheck %s 3*8b360c69SBin Cheng 4*8b360c69SBin Cheng; Check that we don't crash and specialise on a scalar global variable with byval attribute. 5*8b360c69SBin Cheng 6*8b360c69SBin Cheng; CHECK-NOT: wombat.{{[0-9]+}} 7*8b360c69SBin Cheng 8*8b360c69SBin Cheng%struct.pluto = type { %struct.spam } 9*8b360c69SBin Cheng%struct.quux = type { i16 } 10*8b360c69SBin Cheng%struct.spam = type { i16 } 11*8b360c69SBin Cheng 12*8b360c69SBin Cheng@global.5 = external dso_local global i128 13*8b360c69SBin Cheng@global.12 = external global %struct.quux 14*8b360c69SBin Cheng 15*8b360c69SBin Chengdefine internal i16 @wobble(%struct.quux* %arg, i16 %arg1, i128* byval(i128) %arg2, %struct.quux* %arg3) { 16*8b360c69SBin Cheng; CHECK-LABEL: @wobble( 17*8b360c69SBin Cheng; CHECK-NEXT: bb: 18*8b360c69SBin Cheng; CHECK-NEXT: [[TMP34:%.*]] = bitcast i128* [[ARG2:%.*]] to i16* 19*8b360c69SBin Cheng; CHECK-NEXT: unreachable 20*8b360c69SBin Cheng; 21*8b360c69SBin Chengbb: 22*8b360c69SBin Cheng %tmp34 = bitcast i128* %arg2 to i16* 23*8b360c69SBin Cheng unreachable 24*8b360c69SBin Cheng} 25*8b360c69SBin Cheng 26*8b360c69SBin Chengdefine internal i16 @snork() { 27*8b360c69SBin Cheng; CHECK-LABEL: @snork( 28*8b360c69SBin Cheng; CHECK-NEXT: bb4: 29*8b360c69SBin Cheng; CHECK-NEXT: [[TMP35:%.*]] = call i16 @wobble(%struct.quux* undef, i16 2, i128* byval(i128) @global.5, %struct.quux* @global.12) 30*8b360c69SBin Cheng; CHECK-NEXT: unreachable 31*8b360c69SBin Cheng; 32*8b360c69SBin Chengbb4: 33*8b360c69SBin Cheng %tmp35 = call i16 @wobble(%struct.quux* undef, i16 2, i128* byval(i128) @global.5, %struct.quux* @global.12) 34*8b360c69SBin Cheng unreachable 35*8b360c69SBin Cheng} 36*8b360c69SBin Cheng 37*8b360c69SBin Chengdefine i16 @main() { 38*8b360c69SBin Cheng; CHECK-LABEL: @main( 39*8b360c69SBin Cheng; CHECK-NEXT: bb: 40*8b360c69SBin Cheng; CHECK-NEXT: [[TMP:%.*]] = call i16 @snork() 41*8b360c69SBin Cheng; CHECK-NEXT: unreachable 42*8b360c69SBin Cheng; 43*8b360c69SBin Chengbb: 44*8b360c69SBin Cheng %tmp = call i16 @snork() 45*8b360c69SBin Cheng unreachable 46*8b360c69SBin Cheng} 47