MForster added a comment.

Adrian has reverted this commit for me. Here is a reproduction case for the 
issue that is triggered by this change:

  #include <initializer_list>
  
  template<typename T>
  struct S {};
  
  template<typename T>  
  S<T> foo() {
    for (auto status : { S<T>() }) {
        return status;
    }
  }
  
  void a() {
    foo<int>();
  }

This is the segmentation fault:

  instantiating function definition 'foo<int>'
   #0 0x000055807ba49925 SignalHandler(int) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x6649925)
   #1 0x00007f18a9d509a0 __restore_rt 
(/usr/grte/v4/lib64/libpthread.so.0+0xf9a0)
   #2 0x000055807901a01d clang::ASTContext::getTypeInfoImpl(clang::Type const*) 
const (third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x3c1a01d)
   #3 0x0000558078ffcf93 clang::ASTContext::getPreferredTypeAlign(clang::Type 
const*) const 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x3bfcf93)
   #4 0x0000558078ffc4ea clang::ASTContext::getDeclAlign(clang::Decl const*, 
bool) const 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x3bfc4ea)
   #5 0x0000558078029686 clang::Sema::getNamedReturnInfo(clang::VarDecl const*) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2c29686)
   #6 0x0000558078026e84 
clang::TemplateDeclInstantiator::VisitVarDecl(clang::VarDecl*, bool, 
llvm::ArrayRef<clang::BindingDecl*>*) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2c26e84)
   #7 0x0000558079388ebc clang::Sema::SubstDecl(clang::Decl*, 
clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x3f88ebc)
   #8 0x0000558077fd8a2d clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformDeclStmt(clang::DeclStmt*) 
(.llvm.3943398439186356346) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2bd8a2d)
   #9 0x000055807823f79f clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCXXForRangeStmt(clang::CXXForRangeStmt*)
 (.llvm.3943398439186356346) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2e3f79f)
  #10 0x00005580794bfa18 clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*) 
(.llvm.3943398439186356346) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x40bfa18)
  #11 0x000055807940149f 
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, 
clang::FunctionDecl*, bool, bool, bool) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x400149f)
  #12 0x00005580794027a3 clang::Sema::PerformPendingInstantiations(bool) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x40027a3)
  #13 0x00005580780f5443 
clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2cf5443)
  #14 0x00005580780f461c clang::Sema::ActOnEndOfTranslationUnit() 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2cf461c)
  #15 0x00005580785530e3 
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool) 
(.cold) (third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x31530e3)
  #16 0x00005580780f224f clang::ParseAST(clang::Sema&, bool, bool) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2cf224f)
  #17 0x00005580781fff95 clang::FrontendAction::Execute() 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2dfff95)
  #18 0x00005580781ffdc4 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2dffdc4)
  #19 0x00005580781ffc98 
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2dffc98)
  #20 0x000055807974f570 cc1_main(llvm::ArrayRef<char const*>, char const*, 
void*) (third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x434f570)
  #21 0x00005580782a04b9 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2ea04b9)
  #22 0x000055807964f49b main 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x424f49b)
  #23 0x00007f18a9bbebbd __libc_start_main 
(/usr/grte/v4/lib64/libc.so.6+0x38bbd)
  #24 0x0000558077fc92c9 _start 
(third_party/crosstool/v18/llvm_unstable/toolchain/bin/clang+0x2bc92c9)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105380/new/

https://reviews.llvm.org/D105380

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to