compile with -O2