[all-commits] [llvm/llvm-project] dedd7b: Added checking for completeness of lvalue in condi...

Aditya-pixel via All-commits all-commits at lists.llvm.org
Mon Mar 27 11:47:25 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: dedd7b6548f4a37f4f691aa0cd3a709756b7e794
      https://github.com/llvm/llvm-project/commit/dedd7b6548f4a37f4f691aa0cd3a709756b7e794
  Author: Aditya Singh <f20190478 at goa.bits-pilani.ac.in>
  Date:   2023-03-27 (Mon, 27 Mar 2023)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/Sema/SemaChecking.cpp
    M clang/test/Sema/incomplete-decl.c

  Log Message:
  -----------
  Added checking for completeness of lvalue in conditional operator

Given:
```
struct x y;
int main(void)
{
    (void)(1 ? y : y);
}
struct x {int i;};
```
The conditional operator(?:) requires the second and third operands to
be of compatible types. To be compatible, they also need to be
complete (however, both can be void). Therefore, the expected response
from clang after running the above code as a C program should be error
dialogue pointing out that both the types are incomplete hence
incompatible, but the code compiled without any errors.

The patch ensures the completeness in the CheckCondtionalOperand
function present in llvm-project/clang/lib/Sema/SemaChecking.cpp.

Fixes https://github.com/llvm/llvm-project/issues/59718
Differential Revision: https://reviews.llvm.org/D144358




More information about the All-commits mailing list