http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60648
--- Comment #3 from Jeffrey A. Law <law at redhat dot com> --- We're getting non-canonical as part of the index computation in do_tablejump: (gdb) p debug_rtx (index) (plus:SI (mult:SI (const_int 0 [0]) (const_int 4 [0x4])) (label_ref:SI 0)) Obviously memory_address and its children aren't prepared to deal with the non-canonical RTL. Not sure what this has to do with threading, other than perhaps threading exposing "0" as the index