std::initializer_list objects can be constructed sort of explicitly, eg. (std::initializer_list<int>){12}. This produces an AST that looks like
CompoundLiteralExpr 0x11987f1a0 'std::initializer_list<int>':'class std::initializer_list<int>' `-CXXStdInitializerListExpr 0x11987f188 'std::initializer_list<int>':'class std::initializer_list<int>' `-MaterializeTemporaryExpr 0x11987f170 'const int [1]' xvalue `-InitListExpr 0x11987f128 'const int [1]' `-IntegerLiteral 0x11987cd18 'int' 12
We crash because we did not expect to see CompoundLiteralExpr containing CXXStdInitializerListExpr.
It seems correct to pass the value through CompoundLiteralExpr transparently (the value is currently a conjured structure-symbol of initializer_list type, which sounds like a correct value for the expression, even if not super verbose), hence the patch.