前世紀に書いたgccで-O1と-O3で実行結果が異なるコードです。インライン展開が作用しました。今のバージョンのgccでどうなるかは確認していません。なお、警告は出ると思いますし、処理系によってはコンパイルが通らない事もあると思います。
#include<stdio.h>
int *ptr;
void test(void){
int a;
a = 10;
ptr = &a;
}void test2(void){
int b;
b = 23;
}main(){
test();
printf("Result1: %d\n",*ptr);
test();
test2();
printf("Result2: %d\n",*ptr);
}