https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116726
--- Comment #7 from Martin Uecker <muecker at gwdg dot de> --- (In reply to Peter Damianov from comment #6) > Another testcase: > not an ICE, but I think rejects-valid > ``` > typedef void f(struct s1); > struct s1 { > int f1; > }; > typedef void f(struct s1); > ``` > > <source>:5:14: error: conflicting types for 'f'; have 'void(struct s1)' > 5 | typedef void f(struct s1); > | ^ > <source>:1:14: note: previous declaration of 'f' with type 'f' {aka > 'void(struct s1)'} > 1 | typedef void f(struct s1); > | ^ This is the same as: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116728 But I think the behavior is correct. See the discussion there.