Here's the smallest repro: ```c++ void doit(); template <typename> struct Z { Z() = delete; }; template <> Z<int>::Z() { doit(); } int main() { Z<int> z; } ``` When clang compiles this sample, the call to the ctor is completely gone in the generated code regardless of optimization level. This is the more elaborate repro: https://godbolt.org/z/PM1vx7oa5.