lebedev.ri added a comment. In https://reviews.llvm.org/D49508#1167177, @efriedma wrote:
> skipRValueSubobjectAdjustments has to match the rules in `[class.temporary]` > in the standard, which includes skipping over certain explicit casts. I'm this approach because this is what @rsmith suggested. As i said, i don't really know this code, so maybe i'm missing something obvious that makes this still possible. > Would it be enough to accumulate the skipped casts into a SmallVector, like > we do for the skipped comma operators? Hmm, I'm not sure. It depends whether we return from `CodeGenFunction::EmitMaterializeTemporaryExpr()`, or are still within the `CodeGenFunction::EmitMaterializeTemporaryExpr()` function, when visiting nested nodes. This might work, but let's see if i can make the flag approach work. In https://reviews.llvm.org/D49508#1167566, @rjmccall wrote: > I think it would be reasonable to set a flag on `ImplicitCastExpr`s that are > actually semantically part of an explicit cast. I don't think that would be > hard to get Sema to do, either by passing a flag down to the code that builds > those casts or just by retroactively setting that flag on all the ICE > sub-expressions of an explicit cast when "capping" it with the > `ExplicitCastExpr`. That was my initial thought, too. I wasn't sure how to approach this though. Repository: rC Clang https://reviews.llvm.org/D49508 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits