https://bugs.llvm.org/show_bug.cgi?id=43601
Bug ID: 43601
Summary: non-deterministic compile errors with constexpr and
nonnull attribute
Product: new-bugs
Version: 9.0
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: new bugs
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected], [email protected]
The following program when compiled with `clang++ -c test.cc` will fail to
compile around 50% of the time:
```
__attribute__((__nonnull__)) constexpr int bar(const char *, int) { return 0; }
int main() { constexpr int i = bar("foo", 12345); }
```
with the following error:
```
test.cc:2:28: error: constexpr variable 'i' must be initialized by a constant
expression
int main() { constexpr int i = bar("foo", 12345); }
^ ~~~~~~~~~~~~~~~~~
test.cc:2:43: note: null passed to a callee that requires a non-null argument
int main() { constexpr int i = bar("foo", 12345); }
^
1 error generated.
```
This prevents using constexpr std::string_view::find from libstdc++ 9.2.0, the
following program has the same problem as the above reduced test case:
```
#include <string_view>
int main() {
constexpr std::string_view sv = "test";
constexpr std::size_t sz = sv.find("blah", 1);
}
```
I was unable reproduce the problem without a second argument.
--
You are receiving this mail because:
You are on the CC list for the bug._______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs