16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9.0 -emit-llvm -O1 -mdisable-tail-calls -o - < %s | FileCheck %s 26bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 36bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinestypedef struct List { 46bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines struct List *next; 56bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines int data; 66bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines} List; 76bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 86bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK-LABEL: define %struct.List* @find 96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen HinesList *find(List *head, int data) { 106bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines if (!head) 116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines return 0; 126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines if (head->data == data) 136bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines return head; 146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call %struct.List* @find 156bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines return find(head->next, data); 166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines} 17