というか-O3にしたらaaa()がa()やb()の中に取り込まれててワロタ

差が出るプログラムはこういうバグるプログラムの方が例としてはいいと思うが

void func1(int *p1, int *p2)
{
*p1 = 10;
*p2 = 20;

printf("*p1 = %d\n", *p1);
}

void func2(int *restrict p1, int *restrict p2)
{
*p1 = 10;
*p2 = 20;

printf("*p1 = %d\n", *p1);
}

int main()
{
int i;

func1(&i, &i);
func2(&i, &i);
}