1eba76056SSjoerd Meijer; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*9627bcdeSAlexandros Lamprineas; RUN: opt -passes="ipsccp<func-spec>" -force-specialization -S < %s | FileCheck %s 3eba76056SSjoerd Meijer 4eba76056SSjoerd Meijer; Check that we don't crash and specialise on a poison value. 5eba76056SSjoerd Meijer 6eba76056SSjoerd Meijer%struct.quux = type { i16 } 7eba76056SSjoerd Meijer%struct.spam = type { i16 } 8eba76056SSjoerd Meijer 9eba76056SSjoerd Meijer@global.12 = external global %struct.quux, align 1 10eba76056SSjoerd Meijer 11ebdf5aefSMatt Arsenaultdefine internal i16 @wobble(ptr byval(%struct.spam) %arg2) { 12eba76056SSjoerd Meijer; CHECK-LABEL: @wobble( 13eba76056SSjoerd Meijer; CHECK-NEXT: bb: 14eba76056SSjoerd Meijer; CHECK-NEXT: unreachable 15eba76056SSjoerd Meijer; 16eba76056SSjoerd Meijerbb: 17eba76056SSjoerd Meijer unreachable 18eba76056SSjoerd Meijer} 19eba76056SSjoerd Meijer 20eba76056SSjoerd Meijerdefine internal i16 @snork() { 21eba76056SSjoerd Meijer; CHECK-LABEL: @snork( 22eba76056SSjoerd Meijer; CHECK-NEXT: bb4: 23ebdf5aefSMatt Arsenault; CHECK-NEXT: [[B:%.*]] = call i16 @wobble(ptr poison) 24eba76056SSjoerd Meijer; CHECK-NEXT: unreachable 25eba76056SSjoerd Meijer; 26eba76056SSjoerd Meijerbb4: 27ebdf5aefSMatt Arsenault %B = call i16 @wobble(ptr poison) 28eba76056SSjoerd Meijer unreachable 29eba76056SSjoerd Meijer} 30eba76056SSjoerd Meijer 31eba76056SSjoerd Meijerdefine i16 @main() { 32eba76056SSjoerd Meijer; CHECK-LABEL: @main( 33eba76056SSjoerd Meijer; CHECK-NEXT: bb: 34eba76056SSjoerd Meijer; CHECK-NEXT: [[A:%.*]] = call i16 @snork() 35eba76056SSjoerd Meijer; CHECK-NEXT: unreachable 36eba76056SSjoerd Meijer; 37eba76056SSjoerd Meijerbb: 38eba76056SSjoerd Meijer %A = call i16 @snork() 39eba76056SSjoerd Meijer unreachable 40eba76056SSjoerd Meijer} 41