tahonermann added a comment.

Here is a simple test case that fails the assertion in the current location.

  struct B {
    B(int, int);
  };
  struct D : B {
    D() : B(0, 1) {}
  };

I spent a bit more time looking at the code and finally realized that 
`Initializer` is only assigned when `Args.size()` is exactly 1. So 
`Initializer` doesn't equate to whether or not an initializer is present; it 
equates to when exactly one initialization argument is present and in that case 
it aliases `Args[0]`. I don't like that, but deviating from it just to address 
a Coverity complaint doesn't seem justified.

I suggest we do this: add an assertion on `Initializer` at the beginning of 
each of the blocks that Coverity complained about. In my view of the source, 
that corresponds to lines 5939, 5958, and 6025.


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

https://reviews.llvm.org/D139148

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

Reply via email to