I've been using "gdc (GCC) 4.6.3 20120106 (gdc 0.31 - r748:ab99d67f04c2, dmd 2.057)" as my only D compiler for the last months, and it's been doing great, almost everything including LTO works. There have been a few ices/crashes, but mostly with invalid code or looking front-end related (didn't want to report them until the 4.8 merge is done). But still using that old compiler means working with a different language, so I finally decided to try out the current GDC versions, and started with the 4.7 branch.
First difference that i noticed - the frontend version no longer shows up in '--version' output - is there a way to retrieve it, preferably as a git hash? Then the very first app that i tried to compile didn't - failed with an LTO related error. I need LTO for that one, at least i used to with my old compiler. Decided to try the head (4.8) based tree - with similar results; apparently LTO no longer works at all, even for trivial 'void main(){}' programs. At least the error, which appears to be the same, got a bit better reported on that branch [1]. One difference between my old working setup and the new ones is that the former is not a multilib one; haven't tried a new build w/o multilibs yet. Then I wanted to try to build some other programs using master, w/o LTO. Didn't really work - the problem is that gcc-pragma-attributes are now /errors/. So I'd have to modify the sources just to build with the newer compiler - which isn't a big problem; the fact that I can't then easily go back to using an older one is. I tried modifying some trivial sources, which were using only 'pragma(attribute, noinline)', but couldn't get them to work; the compiler keeps complaining, 'cc1d: error: unknown attribute noinline'. Is 'import gcc.attribute; @attribute("noinline") void f() {}' supposed to work? artur [1] $ gdc -flto main.d -o main lto1: internal compiler error: in streamer_get_pickled_tree, at tree-streamer-in.c:1050 0x6a18a7 streamer_get_pickled_tree(lto_input_block*, data_in*) [clone .part.7] ../../gcc/tree-streamer-in.c:1049 0x6a18a7 streamer_get_pickled_tree(lto_input_block*, data_in*) ../../gcc/tree-streamer-in.c:1039 0xd68ffa lto_input_tree(lto_input_block*, data_in*) ../../gcc/lto-streamer-in.c:1065 0x80e22f lto_input_ts_type_common_tree_pointers ../../gcc/tree-streamer-in.c:768 0x80e22f streamer_read_tree_body(lto_input_block*, data_in*, tree_node*) ../../gcc/tree-streamer-in.c:997 0xd68ed8 lto_read_tree ../../gcc/lto-streamer-in.c:1015 0xd68ed8 lto_input_tree(lto_input_block*, data_in*) ../../gcc/lto-streamer-in.c:1082 0x80da59 streamer_read_tree_body(lto_input_block*, data_in*, tree_node*) ../../gcc/tree-streamer-in.c:599 0xd68ed8 lto_read_tree ../../gcc/lto-streamer-in.c:1015 0xd68ed8 lto_input_tree(lto_input_block*, data_in*) ../../gcc/lto-streamer-in.c:1082 0xb2504f lto_read_decls(lto_file_decl_data*, void const*, vec<ld_plugin_symbol_resolution, va_heap, vl_ptr>) [clone .12623] ../../gcc/lto/lto.c:2086 0xa570bb lto_file_finalize(lto_file_decl_data*, lto_file_struct*) [clone .isra.48] ../../gcc/lto/lto.c:2339 0xa570bb lto_create_files_from_ids ../../gcc/lto/lto.c:2349 0xa570bb lto_file_read ../../gcc/lto/lto.c:2389 0xa570bb read_cgraph_and_symbols ../../gcc/lto/lto.c:2964 0xa570bb lto_main() ../../gcc/lto/lto.c:3375 Please submit a full bug report,