In Julia 1.3.1, the LLVM optimization passes are listed in jitlayers.cpp, while on master they’re given in aotcompile.cpp.
Basically the only difference between -O2 and -O3 as far as I can tell is that -O3 adds a basic alias analysis pass.
-O2 is the default.