ipa-devirt TLC 8 - break out polymorphic context code

2014-09-25 Thread Jan Hubicka
Hi, this patch moves all code dealing with polymorphic_call_context to ipa-polymorphic-call.c in hope that things are more manageable this way. This code contains most of the magic of analyzing GIMPLE and determining contextes. ipa-devirt.c still contains several essentially independent things - t

ipa-devirt TLC 6 - reorg of query cache

2014-09-25 Thread Jan Hubicka
Hi, this patch makes polymorphic call targets cache more effective. With more aggresive speculation the code now run into a problem that it have many different speculative lists. Those are typically sort in number of calls speculatively considered likely but they do have long list of unlikely

ipa-devirt TLC 4

2014-09-24 Thread Jan Hubicka
Hi, this patch (finally) moves polymorphic call contextes into indirect call info solving ugly clash in between OFFSET used by IPA_PROP (where it is offset within aggregate passed by the pointer) and OFFSET used by ipa-devirt (where it is offset within the type of instance). The patch aslo moves i

ipa-devirt TLC 3 - more cleanups in polymorphic_call_context

2014-09-24 Thread Jan Hubicka
Hi, this patch applies more TLC to ipa-devirt. It refactors code for easier manipulation with polymorphic_call_context and also makes restrict_to_inner_type to correctly consider caes where placement new can happen as well as cases where derived type is considered. This makes it possible to decla

ipa-devirt TLC

2014-08-16 Thread Jan Hubicka
Hi, this patch wraps ipa_polymorphic_call_context into a C++ class. There are no functional changes. I am heading to restructure the code in a way so call contextes can be used in forward propagation and replace current ipa-cp BINFO walk. The goal is to split get_polymorphic_call_info in a way