aalmkainzi wrote:

@tbaederr @AaronBallman 

https://github.com/aalmkainzi/llvm-project/tree/disallow-non-null-constexpr-pointers-in-both-modes

In a branch off of the one of this PR, I added checks for non null pointers in 
both evaluators. I had to add `CheckNotNull` for the new constant interpreter, 
not sure if this is the best way to do it.

Should I merge it into this PR's branch?

so things like this would get rejected:
```C
constexpr struct C c2 = (struct C){&a};
```

Although, I'm having a bit of a problem with the tests. for some reason the 
following tests:
```C
constexpr struct C c2 = (struct C){&a}; // expected-error{{constexpr variable 
'c2' must be initialized by a constant expression}}

constexpr union U u2 = (union U){.p = &a}; // expected-error{{constexpr 
variable 'u2' must be initialized by a constant expression}}
```
give these failures:
```
# | error: 'expected-error' diagnostics seen but not expected: 
# |   File /home/malek/repos/llvm-project/clang/test/Sema/constexpr.c Line 485: 
constexpr variable 'c2' must be initialized by a constant expression
# |   File /home/malek/repos/llvm-project/clang/test/Sema/constexpr.c Line 490: 
constexpr variable 'u2' must be initialized by a constant expression
# | 2 errors generated.
```
These are the errors I expected...

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

Reply via email to