You can use:
gcc -g cfile.c
objdump -S a.out > cfile.asm
And look for the line with the for loop. My disassembly looks like:
for(; i < 10
{
804837c: 83 7d fc 09 cmpl $0x9,0xfffffffc(%ebp)
8048380: 7e 02 jle 8048384 <main+0x26>
8048382: eb 0d jmp 8048391 <main+0x33>
sum += 5;
8048384: 8d 45 f8 lea 0xfffffff8(%ebp),%eax
8048387: 83 00 05 addl $0x5,(%eax)
i++;
804838a: 8d 45 fc lea 0xfffffffc(%ebp),%eax
804838d: ff 00 incl (%eax)
804838f: eb eb jmp 804837c <main+0x1e>
}
if(sum <= 100) {
8048391: 83 7d f8 64 cmpl $0x64,0xfffffff8(%ebp)
So the first branch is the jle (jump less equal) which executes only 10 time from 11 executions (0.909% aprox 0.91%)
I assume the the second branch is the fall branch (jle not taken so flow goes to the next instruction).
The third branch must be the jmp.
The execution count could be computed on basic blocks and in the for instruction there are 2 basic blocks (cmp and jle one, and jmp another) So 11 for the first and 10 for the second.
Hope it helps.