<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>And I disabled it only for device side, which is NVPTX, no? Can
host side target class report that the target is NVPTX? If you
look at the patch, it disable RTTI only if current triple is
NVPTX. Can it be true for the host? <br>
</p>
<pre class="moz-signature" cols="72">-------------
Best regards,
Alexey Bataev</pre>
<div class="moz-cite-prefix">15.01.2020 1:06 PM, Artem Belevich
пишет:<br>
</div>
<blockquote type="cite"
cite="mid:CA+wKYkMVfspiFhuU=4F=JW+LfppmcLsRE94Q2aF7bt35i76rLQ@mail.gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Jan 15, 2020 at 2:52
PM Alexey Bataev <<a href="mailto:a.bataev@outlook.com"
moz-do-not-send="true">a.bataev@outlook.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p>1. The problem is that it does not produce errors, </p>
</div>
</blockquote>
<div><span class="gmail_default"
style="font-family:verdana,sans-serif">ATM, it does
produce errors when it's disabled.</span> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p>it leads to the emission of some declaration that
cannot be resolved by the linker. This what I was trying
to avoid.</p>
</div>
</blockquote>
<div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">I'm OK with
disabling it on device, but it should be done in a way to
keep RTTI in the host code working.</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">E.g. this code
should compile: <a href="https://godbolt.org/z/Gzsrof"
moz-do-not-send="true">https://godbolt.org/z/Gzsrof</a></div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">It still has your
original change, so clang compilation fails. It does not
with NVCC.</div>
</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p>2. Yes, I did not disable it on the host side, just for
the device side. I disabled it only for NVPTX target,
which is the device.<br>
</p>
</div>
</blockquote>
<div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">It's fine to
disable it for code generated for the target. However, the
front-end needs to be able to deal with the host-side code
where it is OK to use RTTI.</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default"
style="font-family:verdana,sans-serif">--Artem</div>
<br>
</div>
<div><br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p> </p>
<pre cols="72">-------------
Best regards,
Alexey Bataev</pre>
<div>15.01.2020 12:49 PM, Artem Belevich пишет:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div style="font-family:verdana,sans-serif">Thank you.</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">In
general, RTTI should probably be treated similar to
how we deal with inline assembly and ignore errors
if they are in the code that we're not going to
codegen during this side of compilation. E.g. during
host-side compilation we don't complain about
GPU-side registers in inline assembly that x86
target is not aware of. </div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">Disabling
RTTI altogether on device side makes it impossible
to use in any host-side CUDA because RTTI code will
be seen by the device-side compiler, which will
promptly fail, which is exactly what happened in
this case -- host-side template that relied on RTTI
failed during device-side compilation:</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif"><a
href="https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/arena.h#L536"
target="_blank" moz-do-not-send="true">https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/arena.h#L536</a><br>
</div>
<div style="font-family:verdana,sans-serif">google/protobuf/arena.h:536:15:
error: use of typeid requires -frtti<br>
AllocHook(RTTI_TYPE_ID(T), n);<br>
</div>
<div style="font-family:verdana,sans-serif">...<br>
</div>
<div style="font-family:verdana,sans-serif">2 errors
generated when compiling for sm_60.<br>
</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">--Artem</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Jan 15, 2020
at 2:36 PM Alexey Bataev <<a
href="mailto:a.bataev@outlook.com" target="_blank"
moz-do-not-send="true">a.bataev@outlook.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p>Sure, will revert it ASAP.<br>
</p>
<pre cols="72">-------------
Best regards,
Alexey Bataev</pre>
<div>15.01.2020 12:26 PM, Artem Belevich пишет:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div style="font-family:verdana,sans-serif">Alexey,</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">This
breaks compilation of our cuda code which
happens to transitively include protobuf
headers.</div>
<div style="font-family:verdana,sans-serif">Can
you, please, revert it for now until we
figure out how RTTI should be handled?</div>
<div style="font-family:verdana,sans-serif"><br>
</div>
<div style="font-family:verdana,sans-serif">--Artem<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Jan
14, 2020 at 3:15 PM Alexey Bataev via
cfe-commits <<a
href="mailto:cfe-commits@lists.llvm.org"
target="_blank" moz-do-not-send="true">cfe-commits@lists.llvm.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex"><br>
Author: Alexey Bataev<br>
Date: 2020-01-14T18:12:06-05:00<br>
New Revision:
23058f9dd4d7e18239fd63b6da52549514b45fda<br>
<br>
URL: <a
href="https://github.com/llvm/llvm-project/commit/23058f9dd4d7e18239fd63b6da52549514b45fda"
rel="noreferrer" target="_blank"
moz-do-not-send="true">https://github.com/llvm/llvm-project/commit/23058f9dd4d7e18239fd63b6da52549514b45fda</a><br>
DIFF: <a
href="https://github.com/llvm/llvm-project/commit/23058f9dd4d7e18239fd63b6da52549514b45fda.diff"
rel="noreferrer" target="_blank"
moz-do-not-send="true">https://github.com/llvm/llvm-project/commit/23058f9dd4d7e18239fd63b6da52549514b45fda.diff</a><br>
<br>
LOG: [OPENMP]Do not use RTTI by default for
NVPTX devices.<br>
<br>
NVPTX does not support RTTI, so disable it
by default.<br>
<br>
Added: <br>
clang/test/Driver/openmp-offload-gpu.cpp<br>
<br>
Modified: <br>
clang/lib/Driver/ToolChain.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff --git a/clang/lib/Driver/ToolChain.cpp
b/clang/lib/Driver/ToolChain.cpp<br>
index cab97b1a601a..3ebbd30195b3 100644<br>
--- a/clang/lib/Driver/ToolChain.cpp<br>
+++ b/clang/lib/Driver/ToolChain.cpp<br>
@@ -68,7 +68,8 @@ static ToolChain::RTTIMode
CalculateRTTIMode(const ArgList &Args,<br>
}<br>
<br>
// -frtti is default, except for the PS4
CPU.<br>
- return (Triple.isPS4CPU()) ?
ToolChain::RM_Disabled :
ToolChain::RM_Enabled;<br>
+ return (Triple.isPS4CPU() ||
Triple.isNVPTX()) ? ToolChain::RM_Disabled<br>
+
: ToolChain::RM_Enabled;<br>
}<br>
<br>
ToolChain::ToolChain(const Driver &D,
const llvm::Triple &T,<br>
<br>
diff --git
a/clang/test/Driver/openmp-offload-gpu.cpp
b/clang/test/Driver/openmp-offload-gpu.cpp<br>
new file mode 100644<br>
index 000000000000..9da7308506ae<br>
--- /dev/null<br>
+++
b/clang/test/Driver/openmp-offload-gpu.cpp<br>
@@ -0,0 +1,20 @@<br>
+///<br>
+/// Perform several driver tests for OpenMP
offloading<br>
+///<br>
+<br>
+// REQUIRES: clang-driver<br>
+// REQUIRES: x86-registered-target<br>
+// REQUIRES: powerpc-registered-target<br>
+// REQUIRES: nvptx-registered-target<br>
+<br>
+///
###########################################################################<br>
+<br>
+/// PTXAS is passed -c flag by default when
offloading to an NVIDIA device using OpenMP<br>
+/// Check that the flag is passed when
-fopenmp-relocatable-target is used.<br>
+// RUN: %clangxx -### -fopenmp=libomp
-fopenmp-targets=nvptx64-nvidia-cuda \<br>
+// RUN: -save-temps
-no-canonical-prefixes %s -x c++ -c
2>&1 \<br>
+// RUN: | FileCheck
-check-prefix=CHK-RTTI %s<br>
+<br>
+// CHK-RTTI: clang{{.*}}" "-triple"
"nvptx64-nvidia-cuda"<br>
+// CHK-RTTI-SAME: "-fno-rtti"<br>
+<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org"
target="_blank" moz-do-not-send="true">cfe-commits@lists.llvm.org</a><br>
<a
href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits"
rel="noreferrer" target="_blank"
moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr">--Artem Belevich</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr">--Artem Belevich</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr">--Artem Belevich</div>
</div>
</div>
</blockquote>
</body>
</html>