I think you misread my comment, the -O0 is scary. Check the output of the ```-O3``` I posted.

```
; Function Attrs: nounwind readnone ssp uwtable
define i32 @_Z3foov() #0 {
entry:
  ret i32 1
}

; Function Attrs: nounwind readnone ssp uwtable
define i32 @main() #0 {
entry:
  ret i32 1
}
```