Issue |
130057
|
Summary |
[C++20][Modules] Compile Error with static template function.
|
Labels |
new issue
|
Assignees |
|
Reporter |
jaehyuck0103
|
Hello. LLVM.
I encountered an incomprehensible compilation error related to a static template function while using C++ modules.
I provide the minimal code below to reproduce the issue.
It's my first bug report to LLVM. Please let me know if there's anything wrong.
#### Environment
Ubuntu clang version 21.0.0 (++20250305083430+f4878cb91612-1~exp1~20250305083603.767)
Target: x86_64-pc-linux-gnu
#### Codes
``` c++
// main.cpp
#include "dummy_cuda_runtime.h"
#include <cstdint>
import MyModule;
int main() {
uint16_t *buffer;
cudaMalloc(&buffer, 100 * sizeof(uint16_t)); // No Compile Error
MyClass aaa;
cudaMalloc(&buffer, 100 * sizeof(uint16_t)); // Compile Error
}
```
``` c++
// a.cppm
module;
#include "dummy_cuda_runtime.h"
#include <cstdint>
export module MyModule;
export class MyClass {
public:
MyClass() {
// If below line is not in constructor, No Compile Error
cudaMalloc(&buffer_, 100 * sizeof(uint16_t));
}
uint16_t *buffer_;
};
```
``` c++
// dummy_cuda_runtime.h
template <class T> static void cudaMalloc(T **devPtr, int size) {
// dummy
}
```
```
# CMakeLists.txt
cmake_minimum_required(VERSION 3.30)
set(CMAKE_C_COMPILER clang)
set(CMAKE_CXX_COMPILER clang++)
project(modules-example)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 20)
add_executable(demo main.cpp)
target_sources(demo PUBLIC FILE_SET all_my_modules TYPE CXX_MODULES FILES
a.cppm)
```
``` shell
mkdir build
cd build
cmake .. -G Ninja
ninja
```
``` terminal
FAILED: CMakeFiles/demo.dir/main.cpp.o
/usr/lib/llvm-21/bin/clang++ -std=gnu++20 -MD -MT CMakeFiles/demo.dir/main.cpp.o -MF CMakeFiles/demo.dir/main.cpp.o.d @CMakeFiles/demo.dir/main.cpp.o.modmap -o CMakeFiles/demo.dir/main.cpp.o -c /home/jae/Projects/cpp_modules3/main.cpp
/home/jae/Projects/cpp_modules3/main.cpp:15:5: error: no matching function for call to 'cudaMalloc'
15 | cudaMalloc(&buffer, 100 * sizeof(uint16_t)); // Compile Error
| ^~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs