1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//===-- main.c --------------------------------------------------*- C++ -*-===//
21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)//
31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)//
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// This file is distributed under the University of Illinois Open Source
61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// License. See LICENSE.TXT for details.
76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)//
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//===----------------------------------------------------------------------===//
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <stdio.h>
101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// This simple program is to demonstrate the capability of the lldb command
121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// "breakpoint modify -i <count> breakpt-id" to set the number of times a
131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// breakpoint is skipped before stopping.  Ignore count can also be set upon
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// breakpoint creation by 'breakpoint set ... -i <count>'.
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int a(int);
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int b(int);
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int c(int);
191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int a(int val)
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    if (val <= 1)
231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        return b(val);
241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    else if (val >= 3)
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        return c(val); // a(3) -> c(3) Find the call site of c(3).
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return val;
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int b(int val)
311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return c(val);
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int c(int val)
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return val + 3; // Find the line number of function "c" here.
386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)int main (int argc, char const *argv[])
411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles){
421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    int A1 = a(1);  // a(1) -> b(1) -> c(1)
431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    printf("a(1) returns %d\n", A1);
441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    int B2 = b(2);  // b(2) -> c(2) Find the call site of b(2).
461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    printf("b(2) returns %d\n", B2);
471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    int A3 = a(3);  // a(3) -> c(3) Find the call site of a(3).
491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    printf("a(3) returns %d\n", A3);
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    int C1 = c(5); // Find the call site of c in main.
521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    printf ("c(5) returns %d\n", C1);
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return 0;
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)