[llvm-bugs] [Bug 43601] New: non-deterministic compile errors with constexpr and nonnull attribute
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue Oct 8 00:28:41 PDT 2019
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: unassignedbugs at nondot.org
Reporter: chris at detrino.org
CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20191008/e988e7f6/attachment.html>
More information about the llvm-bugs
mailing list