Skip to content

crash when undeclared template name with dependent template argument used as type #44552

@rgreenblatt

Description

@rgreenblatt
Bugzilla Link 45207
Resolution FIXED
Resolved on Oct 28, 2021 10:05
Version trunk
OS Linux
Blocks #44654
CC @AaronBallman,@zmodem,@tambry,@zygoloid,@tstellar
Fixed by commit(s) llvmorg-11-init-6027-gc48442c9f38

Extended Description

I have filed the same bug on github here: #181, but I am posting here for completeness.

This happens with 10 rc2/rc3 and latest dev built from source.

This is a pretty minimal reproduction:

template <char First, char... Rest> struct Recursive {
  using next = typename Recursive<Rest...>::type;
  using type = notdefined<next::anything>;
};

Build with clang++ -std=c++2a test.cpp
It doesn't crash with -std=c++17

I made a docker container which reproduces the issue: https://hub.docker.com/r/greenblattryan/clang-crash-recursive-template.

Backtrace: https://github.com/llvm/llvm-project/files/4333084/backtrace.txt

Here is a zip with the backtrace, preprocessed source and associated run script.
https://github.com/llvm/llvm-project/files/4333081/bug-report.zip

Metadata

Metadata

Assignees

Labels

bugzillaIssues migrated from bugzillac++20

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions