https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78217
Bug ID: 78217 Summary: Duplicate decls handling with auto Product: gcc Version: 6.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- I've noticed that we error out in both cases on following testcase: extern int a; auto a = 1; extern int b; auto b = 2LL; test.C:2:6: error: conflicting declaration ‘auto a’ auto a = 1; ^ test.C:1:12: note: previous declaration as ‘int a’ extern int a; ^ test.C:4:6: error: conflicting declaration ‘auto b’ auto b = 2LL; ^ test.C:3:12: note: previous declaration as ‘int b’ extern int b; ^ while clang++ rejects only the latter: test.C:4:6: error: redefinition of 'b' with a different type: 'long long' vs 'int' auto b = 2LL; ^ test.C:3:12: note: previous declaration is here extern int b; ^ 1 error generated. That is because we perform duplicate_decls already at start_decl time, but we probably need to defer it for the auto deduction cases until cp_finish_decl time when we actually know the type.