Skip to content

Commit af04c01

Browse files
committed
ggml-cpu : fix linking issue with clang
1 parent fd4ecde commit af04c01

File tree

5 files changed

+13
-7
lines changed

5 files changed

+13
-7
lines changed

ggml/src/ggml-cpu/arch/arm/repack.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <cstdlib> // for qsort
1515
#include <cstdio> // for GGML_ASSERT
1616

17-
#define GGML_CPU_CLANG_WORKAROUND
1817
#include "../../repack.h"
1918

2019
#if defined(__GNUC__)

ggml/src/ggml-cpu/arch/riscv/repack.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <cstdlib> // for qsort
1515
#include <cstdio> // for GGML_ASSERT
1616

17-
#define GGML_CPU_CLANG_WORKAROUND
1817
#include "../../repack.h"
1918

2019
#if defined(__GNUC__)

ggml/src/ggml-cpu/arch/x86/repack.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <cstdlib> // for qsort
1515
#include <cstdio> // for GGML_ASSERT
1616

17-
#define GGML_CPU_CLANG_WORKAROUND
1817
#include "../../repack.h"
1918

2019
#if defined(__GNUC__)

ggml/src/ggml-cpu/repack-impl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ static inline int nearest_int(float fval) {
4444
// operations durin unpacking)
4545
//
4646

47+
#if !(defined(__GNUC__) && defined(__clang__))
4748
extern "C" {
49+
#endif
4850

4951
void ggml_quantize_mat_q8_0_4x4_generic(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k) {
5052
assert(QK8_0 == 32);
@@ -753,4 +755,6 @@ void ggml_gemm_iq4_nl_4x4_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs
753755
}
754756
GGML_CPU_NATIVE_IMPL(ggml_gemm_iq4_nl_4x4_q8_0)
755757

758+
#if !(defined(__GNUC__) && defined(__clang__))
756759
} // extern "C"
760+
#endif

ggml/src/ggml-cpu/repack.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ struct block_iq4_nlx4 {
6060

6161
static_assert(sizeof(block_iq4_nlx4) == 4 * sizeof(ggml_half) + QK4_NL * 2, "wrong iq4_nlx4 block size/padding");
6262

63-
#if defined(__cplusplus)
63+
// Clang always mangles the alias name when compiling a C++ source file
64+
#if defined(__cplusplus) && !(defined(__GNUC__) && defined(__clang__))
6465
extern "C" {
6566
#endif
6667

@@ -78,6 +79,12 @@ void ggml_gemm_q4_0_8x8_q8_0(int n, float * GGML_RESTRICT s, size_t bs, const vo
7879
void ggml_gemm_q4_K_8x8_q8_K(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
7980
void ggml_gemm_iq4_nl_4x4_q8_0(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
8081

82+
#if defined(__cplusplus) && !(defined(__GNUC__) && defined(__clang__))
83+
} // extern "C"
84+
#endif
85+
86+
extern "C" {
87+
8188
// Native implementations
8289
void ggml_quantize_mat_q8_0_4x4_generic(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
8390
void ggml_quantize_mat_q8_0_4x8_generic(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
@@ -93,6 +100,4 @@ void ggml_gemm_q4_0_8x8_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs,
93100
void ggml_gemm_q4_K_8x8_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
94101
void ggml_gemm_iq4_nl_4x4_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
95102

96-
#if defined(__cplusplus)
97-
} // extern "C"
98-
#endif
103+
}

0 commit comments

Comments
 (0)