On Sat, Nov 15, 2014 at 11:15 PM, Jan Hubicka <hubi...@ucw.cz> wrote: > Hi, > late in GCC 4.9 development we broke the feature that ltrans stages do not > read all > functions in ahead. This is because of late IPA passes that do not like to > see functions > without IPA transformations applied. I was originally OK with the solution > based > on fact that we have only IPA-PTA as late IPA pass that is disabled by > default and > eventually probably should become part of WPA in some form. > SIMD streaming was however added and this causes us to stream in all function > bodies > and apply all inlining decisions at very beggining of optimization queue. > > Fixed by this patch. get_body is now responsible for applying transformations > on demand and late IPA passes needs to call get_body on functions that they > are interested in + are advised to not be interested in every single function > in > the program. > > The patch also hits a bug in i386's ix86_set_current_function. It is > responsible > for initializing backend and it does so lazily remembering the previous > options > backend was initialized for. Pragma parsing however clears the cache that > leads > to wrong settings being used for subsetquent functions. > > Bootstrapped/regtested x86_64-linux, will commit it tomorrow after bit of > more testing. >
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63967 H.J.