================
@@ -1344,14 +1344,134 @@ void CIRGenFunction::emitCXXConstructorCall(const 
clang::CXXConstructorDecl *d,
 
   assert(!cir::MissingFeatures::opCallArgEvaluationOrder());
 
-  emitCallArgs(args, fpt, e->arguments(), e->getConstructor(),
-               /*ParamsToSkip=*/0);
+  if (auto inherited = d->getInheritedConstructor();
----------------
erichkeane wrote:

This is the bug from classic codegen that I mention in the comments of the test.

Basically everywhere else we do the `passParams` stuff, which makes sure we 
don't create all the arguments for the base constructor we don't need.

The other `emitCXXConstructorCall` doesn't always get called, particularly in 
the 'base' situation.  So we need this to omit them in this variant.  The 
condition used could be nicer looking, but it is supposed to be the same logic 
as the `passParams` everywhere else.

https://github.com/llvm/llvm-project/pull/191467
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to