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

Reply via email to