https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107565
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Target| |x86_64 Last reconfirmed| |2022-11-08 Component|analyzer |target Assignee|dmalcolm at gcc dot gnu.org |unassigned at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. else if (!fndecl_has_gimple_body_p (callee_fndecl) && (!(callee_fndecl_flags & (ECF_CONST | ECF_PURE))) && !fndecl_built_in_p (callee_fndecl)) unknown_side_effects = true; The last part is part of the problem I think. At least here. Yes maybe we should have another builtin which returns a "_Complex unsigned long long" here which is folded into for __builtin_ia32_rdrand*_step to remove the need to the address too. I am going to declare this one as a target issue but there might be other builtins which are harder to do the "_Complex" trick.