cjappl wrote:

Hi @dougsonos 

Seeing a possible bug when using `malloc` in a [[nonallocating]] context.

Specifically this test program (partially stolen from one of your test cases)

```cpp
#include <cstdlib>
void nb4_inline() {}
void nb4_not_inline();

void nb4() noexcept [[clang::nonallocating]]
{
  float* ptr = (float*)malloc(100 * sizeof(float)); // SHOULD WARN BUT DOES NOT
  nb4_inline(); // OK
  nb4_not_inline(); // expected-warning {{'nonblocking' function must not call 
non-'nonblocking' function}}
}
```

Produces warnings:
```
/Users/topher/code/rtsan_example/main.cpp:15:3: warning: 'nonallocating' 
function must not call non-'nonallocating' function 'nb4_not_inline' 
[-Wfunction-effects]
   15 |   nb4_not_inline(); // expected-warning {{'nonblocking' function must 
not call non-'nonblocking' function}}
      |   ^
/Users/topher/code/rtsan_example/main.cpp:9:6: note: declaration cannot be 
inferred 'nonallocating' because it has no definition in this translation unit
    9 | void nb4_not_inline();
      |      ^
```
But we are missing the warning for the malloc call (which should be 
non-nonallocating)

More simply:
```
#include <cstdlib>
float* nb4() noexcept [[clang::nonallocating]]
{
  float* ptr = (float*)malloc(100 * sizeof(float));
  return ptr;
}
```

Produces no warnings:
```
[2/2] Linking CXX executable helloWorld
Build finished
```


https://github.com/llvm/llvm-project/pull/99656
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to