Closed
Description
The following code crashes with: "/usr/local/google/home/leonardchan/llvm-project-build/bin/llvm" "clang++" "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-emit-obj" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "test.cc" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debug-info-kind=constructor" "-dwarf-version=5" -x c++ /tmp/test.cc -ffixed-point -Oz
float func2(float);
template <typename T = _Sat _Accum>
class C {
public:
C(T intercept) : intercept_(intercept){};
T func() const {
return func2(1.0k);
}
private:
T intercept_;
};
void func() {
C<> c(1.0k);
c.func();
}
llvm: llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp:229: static bool llvm::DebugHandlerBase::isUnsignedDIType(const DIType *): Assertion `(Encoding == dwarf::DW_ATE_unsigned || Encoding == dwarf::DW_ATE_unsigned_char || Encoding == dwarf::DW_ATE_signed || Encoding == dwarf::DW_ATE_signed_char || Encoding == dwarf::DW_ATE_float || Encoding == dwarf::DW_ATE_UTF || Encoding == dwarf::DW_ATE_boolean || Encoding == dwarf::DW_ATE_complex_float || (Ty->getTag() == dwarf::DW_TAG_unspecified_type && Ty->getName() == "decltype(nullptr)")) && "Unsupported encoding"' failed.
Aborted
It looks like fixed types just need to be handled in the check at llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp:229
.