[PATCH] D52879: Derive builtin return type from its definition

Marco Antognini via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 30 08:06:20 PST 2018


mantognini added a comment.

In D52879#1311177 <https://reviews.llvm.org/D52879#1311177>, @riccibruno wrote:

> And moreover I believe this change is subtly incorrect for the following reason:
>  The type that is passed into the constructor of the call expression is the type
>  of the call expression, and not the return type.
>
> The difference between the return type and the type of the call expression is that
>  1.) References are dropped, and
>  2.) For C++: The cv-qualifiers of non class pr-values are dropped,
>  3.) For C: The cv-qualifiers are dropped.
>
> ( as can be seen in `FunctionType::getCallResultType` )


Could you clarify one thing for me: If I understood what you were saying, the type passed to CallExpr should not be ref-cv-qualified, is that right?

In that case, couldn't we "simply" remove the ref + CV-qualifiers from ReturnTy? (`getNonReferenceType().withoutLocalFastQualifiers()`)

Note: I cannot revert this //and// keep the test because the new ones will fail.


Repository:
  rC Clang

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

https://reviews.llvm.org/D52879





More information about the cfe-commits mailing list