I forgot to add in my earlier patch that if you are working on converting a pass and need to enable -O2 in your local tree, you can apply this reversal patch to opts.c:
Index: opts.c =================================================================== --- opts.c (revision 132051) +++ opts.c (working copy) @@ -775,16 +775,6 @@ decode_options (unsigned int argc, const } } - /* FIXME tuples. Force optimization level to 0 until alias analysis - and complex lowering at O1+ is fully enabled. */ - if (flag_gimple_conversion == 0) - { - optimize = 0; - optimize_size = 0; - } - else - gimple_unreachable (); - if (!optimize) { flag_merge_constants = 0;