[llvm-bugs] [Bug 51079] New: constinit thread_local not destroyed when type incomplete at odr-use
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue Jul 13 09:55:38 PDT 2021
https://bugs.llvm.org/show_bug.cgi?id=51079
Bug ID: 51079
Summary: constinit thread_local not destroyed when type
incomplete at odr-use
Product: clang
Version: trunk
Hardware: All
OS: All
Status: NEW
Keywords: miscompilation
Severity: normal
Priority: P
Component: C++2a
Assignee: unassignedclangbugs at nondot.org
Reporter: hstong at ca.ibm.com
CC: blitzrakete at gmail.com, erik.pilkington at gmail.com,
llvm-bugs at lists.llvm.org, richard-llvm at metafoo.co.uk
When an odr-use of a constinit thread_local variable of incomplete class type
occurs, Clang does not make any attempt to register the odr-use (and thus the
initialization and any associated destructor calls). The case where the
variable is a (possibly multi-dimensional) array of an incomplete class type is
similarly affected.
### SOURCE (<stdin>):
struct A;
extern constinit thread_local A a;
A &foo() { return a; }
### COMPILER INVOCATION:
clang -cc1 -emit-llvm -Wall -Wextra -Werror -pedantic-errors -std=c++20 -xc++
-std=c++20 -
### ACTUAL OUTPUT (IR snippet):
define dso_local nonnull align 1 %struct.A* @_Z3foov() #0 {
entry:
ret %struct.A* @a
}
### EXPECTED OUTPUT (IR snippet):
define dso_local nonnull align 1 dereferenceable(1) %struct.A* @_Z3foov() #0 {
entry:
%0 = call %struct.A* @_ZTW1a()
ret %struct.A* %0
}
### COMPILER VERSION INFO (clang++ -v):
clang version 13.0.0 (https://github.com/llvm/llvm-project.git
c4ed142e695f14ba5675ec6d12226ee706329a0f)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/wandbox/clang-head/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
--
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/20210713/c96faeef/attachment.html>
More information about the llvm-bugs
mailing list