2a5a84670c
Commit 92f13b6 added trailing ** but left the opening ** unclosed after the
Status label, producing **Status**: Fixed** instead of **Status**: Fixed.
1.3 KiB
1.3 KiB
VDE-054: GCC builtins 在 MSVC 不可用 (__builtin_prefetch / __builtin_ia32_pause)
- ID: VDE-054
- Date: 2026-07-29
- Status: Fixed
- Severity: Critical
- Category: BUILD
- Source: ViewDesign 架构纠正计划 (Task 11) — VDE=ON MSVC 构建
现象
MSVC 编译 VDE 核心库时出现以下错误:
error C3861: "__builtin_prefetch": 找不到标识符 (performance_tuning.h:310,319,581,587,601)
error C3861: "__builtin_ia32_pause": 找不到标识符 (concurrent_data.h:491,516)
根因
以下文件使用了 GCC/Clang 特有的 builtin 函数,缺少 MSVC 等价实现:
-
include/vde/core/performance_tuning.h— 使用__builtin_prefetch(6处)- MSVC 等价:
_mm_prefetch(addr, hint)(需#include <intrin.h>)
- MSVC 等价:
-
include/vde/core/concurrent_data.h— 使用__builtin_ia32_pause(2处)- MSVC 等价:
_mm_pause()(需#include <intrin.h>)
- MSVC 等价:
修复建议
添加跨平台宏,统一抽象为:
VDE_PREFETCH(addr)→__builtin_prefetch/_mm_prefetchVDE_PREFETCH_WRITE(addr)→ 写入预取VDE_PREFETCH_DIST(addr, dist)→ 带距离参数的预取VDE_CPU_PAUSE()→__builtin_ia32_pause/_mm_pause/yield
相关
- 文件:
include/vde/core/performance_tuning.h,include/vde/core/concurrent_data.h - 编译器: MSVC 2022 (v143)