164c92844SNick Lewycky; RUN: llvm-as < %s | llvm-dis | FileCheck %s 2*c8eccd11SDuncan P. N. Exon Smith; RUN: verify-uselistorder < %s 364c92844SNick Lewycky; PR9857 464c92844SNick Lewycky 564c92844SNick Lewyckydefine void @f(i8** nocapture %ptr1) { 664c92844SNick Lewycky; CHECK: define void @f 764c92844SNick Lewyckyentry: 864c92844SNick Lewycky br label %here.i 964c92844SNick Lewycky 1064c92844SNick Lewyckyhere.i: 1164c92844SNick Lewycky store i8* blockaddress(@doit, %here), i8** %ptr1, align 8 1264c92844SNick Lewycky; CHECK: blockaddress(@doit, %here) 1364c92844SNick Lewycky br label %doit.exit 1464c92844SNick Lewycky 1564c92844SNick Lewyckydoit.exit: 1664c92844SNick Lewycky ret void 1764c92844SNick Lewycky} 1864c92844SNick Lewycky 1964c92844SNick Lewyckydefine void @doit(i8** nocapture %pptr) { 2064c92844SNick Lewycky; CHECK: define void @doit 2164c92844SNick Lewyckyentry: 2264c92844SNick Lewycky br label %here 2364c92844SNick Lewycky 2464c92844SNick Lewyckyhere: 2564c92844SNick Lewycky store i8* blockaddress(@doit, %here), i8** %pptr, align 8 2664c92844SNick Lewycky; CHECK: blockaddress(@doit, %here) 2764c92844SNick Lewycky br label %end 2864c92844SNick Lewycky 2964c92844SNick Lewyckyend: 3064c92844SNick Lewycky ret void 3164c92844SNick Lewycky} 32736a4fc4SBenjamin Kramer 33736a4fc4SBenjamin Kramer; PR13895 34736a4fc4SBenjamin Kramerdefine void @doitagain(i8** nocapture %pptr) { 35736a4fc4SBenjamin Kramer; CHECK: define void @doitagain 36736a4fc4SBenjamin Kramerentry: 37736a4fc4SBenjamin Kramer br label %here 38736a4fc4SBenjamin Kramer 39736a4fc4SBenjamin Kramerhere: 40736a4fc4SBenjamin Kramer store i8* blockaddress(@doit, %here), i8** %pptr, align 8 41736a4fc4SBenjamin Kramer; CHECK: blockaddress(@doit, %here) 42736a4fc4SBenjamin Kramer br label %end 43736a4fc4SBenjamin Kramer 44736a4fc4SBenjamin Kramerend: 45736a4fc4SBenjamin Kramer ret void 46736a4fc4SBenjamin Kramer} 475a5fd7b1SDuncan P. N. Exon Smith 485a5fd7b1SDuncan P. N. Exon Smith; Check a blockaddress taken in two separate functions before the referenced 495a5fd7b1SDuncan P. N. Exon Smith; function. 505a5fd7b1SDuncan P. N. Exon Smithdefine i8* @take1() { 515a5fd7b1SDuncan P. N. Exon Smith ret i8* blockaddress(@taken, %bb) 525a5fd7b1SDuncan P. N. Exon Smith} 535a5fd7b1SDuncan P. N. Exon Smithdefine i8* @take2() { 545a5fd7b1SDuncan P. N. Exon Smith ret i8* blockaddress(@taken, %bb) 555a5fd7b1SDuncan P. N. Exon Smith} 565a5fd7b1SDuncan P. N. Exon Smithdefine void @taken() { 575a5fd7b1SDuncan P. N. Exon Smith unreachable 585a5fd7b1SDuncan P. N. Exon Smithbb: 595a5fd7b1SDuncan P. N. Exon Smith unreachable 605a5fd7b1SDuncan P. N. Exon Smith} 61