https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106816
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Simon Rainer from comment #2) > (In reply to H.J. Lu from comment #1) > > Like this? > > > > diff --git a/gcc/config/i386/i386-features.cc > > b/gcc/config/i386/i386-features.cc > > index fd212262f50..4904e4d71b3 100644 > > --- a/gcc/config/i386/i386-features.cc > > +++ b/gcc/config/i386/i386-features.cc > > @@ -3269,6 +3269,9 @@ ix86_get_function_versions_dispatcher (void *decl) > > /* Right now, the dispatching is done via ifunc. */ > > dispatch_decl = make_dispatcher_decl (default_node->decl); > > TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn); > > + TREE_THIS_VOLATILE (dispatch_decl) = TREE_THIS_VOLATILE (fn); > > + TREE_READONLY (dispatch_decl) = TREE_READONLY (fn); > > + DECL_PURE_P (dispatch_decl) = DECL_PURE_P (fn); > > > > dispatcher_node = cgraph_node::get_create (dispatch_decl); > > gcc_assert (dispatcher_node != NULL); > > I tried something like that, but I didn't see changes in the generated > assembly. I don't know if that is because something else is preventing > optimization or some other member needs to be set correctly. I got main: .LFB2: .cfi_startproc subq $8, %rsp .cfi_def_cfa_offset 16 call _Z5_Z1fvv .cfi_endproc It looks correct.