[cfe-dev] compiling CUDA w/ -fdebug-default-version=5 generates invalid PTX
Alexey Bataev via cfe-dev
cfe-dev at lists.llvm.org
Wed Dec 2 15:20:21 PST 2020
Hi Artem, will check this tomorrow.
Best regards,
Alexey Bataev
2 дек. 2020 г., в 18:00, Artem Belevich <tra at google.com> написал(а):
Hi, Alexey!
I've ran into an odd case with debug info generation in NVPTX.
Reproduction:
------------------------
__device__ __attribute__((noinline)) void bar() { printf("Hi!"); }
__global__ void foo() { bar(); }
int main(){}
------------------------
$ clang++ -v --cuda-gpu-arch=sm_70 --cuda-device-only -fdebug-default-version=5 a.cu<http://a.cu> -gmlt -O1 -c
Compilation fails due to a syntax error reported by ptxas.
The reason for the error is that clang generates a label in the middle of a `call.uni` instuction. E.g:
{ // callseq 1, 0
.reg .b32 temp_param_reg;
call.uni
Ltmp14:
_Z3barv,
(
);
} // callseq 1
The odd part is that we're only generating line info and there is no DWARF in the generated PTX.
It appears that this behavior is triggered by `-dwarf-version=5` passed to cc1.
Looks like another case where PTX syntax breaks DWARF generator assumptions.
It's possible to work around it with an additional `-Xarch_device -fdebug-default-version=2`,
but I'd appreciate it if you could take a look and see if that could be fixed.
--
--Artem Belevich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20201202/93482dfb/attachment.html>
More information about the cfe-dev
mailing list