Hi! This patch is to fix the inconsistent behaviors for non-LTO mode and LTO mode. As Martin pointed out, currently the function rs6000_can_inline_p simply makes it inlinable if callee_tree is NULL, but it's wrong, we should use the command line options from target_option_default_node as default. It also replaces rs6000_isa_flags with the one from target_option_default_node when caller_tree is NULL as rs6000_isa_flags could probably change since initialization. It also extends the scope of the check for the case that callee has explicit set options, for test case pr102059-2.c inlining can happen unexpectedly before, it's fixed accordingly. As Richi/Mike pointed out, some tuning flags like MASK_P8_FUSION can be neglected for inlining, this patch also exludes them when the callee is attributed by always_inline. Bootstrapped and regtested on powerpc64le-linux-gnu Power9. BR, Kewen ----- gcc/ChangeLog: PR ipa/102059 * config/rs6000/rs6000.c (rs6000_can_inline_p): Adjust with target_option_default_node and consider always_inline_safe flags. gcc/testsuite/ChangeLog: PR ipa/102059 * gcc.target/powerpc/pr102059-1.c: New test. * gcc.target/powerpc/pr102059-2.c: New test. * gcc.target/powerpc/pr102059-3.c: New test. * gcc.target/powerpc/pr102059-4.c: New test.