https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65743
--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Indeed, the compiler seems to think that the call is always bogus. Considering ensureHolder/2875306 with 77 size to be inlined into getOwnPropertyDescriptor/2875397 in unknown:-1 Estimated badness is -0.000068, frequency 1.00. Called 13697x Badness calculation for getOwnPropertyDescriptor/2875397 -> ensureHolder/2875306 size growth 67, time 23 inline hints: same_scc in_scc known_hot big_speedup -0.000548: guessed profile. frequency 1.000000, count 13697 caller count 13697 time w/o inlining 78.000000, time w inlining 60.000000 overall growth 1129 (current) 602 (original) 658 Adjusted by hints -0.000068 Accounting size:51.50, time:18.78 on predicate:(true) Processing frequency ensureHolder Called by getOwnPropertyDescriptor that is normal or hot Processing frequency SetProxyExtra Called by ensureHolder that is normal or hot discovered direct call to non-function in ensureHolder/18119817, making it __builtin_unreachable converting indirect call in ensureHolder to direct call to __builtin_unreachable Speculative indirect call ensureHolder/18119817 => createHolder/18119819 has turned out to have contradicting known target __builtin_unreachable Polymorphic call context combine: Outer type (dynamic):struct XrayTraits (or a derived type) offset 0 So this seems to be ipa-prop bug. It shouldnot prove the call to be bogus (ipa-devirt machinery seems happy about the call)