问题标签 [llvm-fs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
404 浏览

c# - 来自 LLVM 绑定的不平衡堆栈警告

经过数周的努力,我设法编写了使用 LLVM 进行 JIT 编译的 F# 程序。但是,每当我在带有调试器的 Visual Studio 2010 中运行我的程序时(即按 F5),我都会收到以下警告:

在此处输入图像描述

现在,在使用我的 Windows 7 上网本时,每次 PInvoke 调用都会收到此警告,但在使用 Windows Vista 桌面时,我只会在某些调用中收到此警告。

其他遇到这个问题的人似乎已经通过向请求 ANSI 字符串或CDecl调用约定的 PInvoke 调用添加属性来解决它。我发现更改调用约定修复了我的 Windows Vista 桌面上的警告,但没有可用的调用约定(或 ANSI 格式字符串)修复我的 Windows 7 上网本上的警告。任何想法如何解决这一问题?

请注意,两台机器都是 32 位 x86。

编辑

人们正在发表评论,要求重新进行。重现此问题的最简单方法是按照我在此处记录的说明安装 LLVM 和 llvm-fs并运行给出的任何示例程序。他们都在我上网本上对 LLVM 的所有调用中都出现了这个问题。

或者,以下代码(源自 llvm-fs)应该重现该问题,而不需要 llvm-fs:

注意原始C头文件中对应的定义是:

0 投票
2 回答
9120 浏览

.net - 即使 dll 与可执行文件位于同一文件夹中,DllImport 也找不到 dll

我正在尝试使用llvm-fs项目,该项目为 F# 提供 llvm 绑定。我已经编译了该LLVM-3.1.dll文件,--enable-shared它现在与我编译的可执行文件位于同一目录中(我检查了Environment.CurrentDirectory)。在DllImportllvm-fs 看起来像:

然而,当我运行我的应用程序时,它会出错:

如何获取要加载的 DLL?作为参考,这是我尝试加载的确切 DLL

0 投票
1 回答
403 浏览

f# - 如何从 F# 调用此本机函数?(LLVMCreateJITCompilerForModule)

我正在使用llvm-fs绑定,我想调用的一种方法是 LLVM C api 中createJITCompilerForModule本机方法的外部方法。LLVMCreateJITCompilerForModulellvm-fs 的作者表示他不能在 F# 中制作这个函数调用的“好”版本:

createJITCompilerForModule in llvm-fs:Generated.fs

你知道我会如何从 F# 调用这个函数,甚至是原生函数的作用吗?看起来它有一个“输出参数” OutJIT(因为本机代码重新分配了void*指向的东西)。这是本机功能:

LLVMCreateJITCompilerForModule in llvm-c:ExecutionEngineBindings.cpp

0 投票
0 回答
318 浏览

compiler-construction - 将源信息放入 LLVM 位码文件以调试编译器错误

我正在制作一个基本的编译器,并希望将源代码行放在为便于调试而生成的 llvm 代码附近的某个位置。例如:

应该以某种方式用源注释,如下所示:

有什么解决方案/方法吗?(顺便说一句,我正在使用 llvm-fs 绑定,但我只想要一种适用于 IR 的方法)

0 投票
1 回答
538 浏览

compiler-construction - 如何使用 LLVM C Api/llvm-fs 绑定添加元数据节点

我正在尝试将元数据节点添加到程序中,无论是添加到指令中还是作为全局元数据。如何使用 LLVM C API 做到这一点?它现在提供了一个功能LLVMAddNamedMetadataOperand(从这个问题中找到),但我似乎看不到如何使用它。这addNamedMetadataOperandllvm-fs绑定中绑定。我试过这个:

期望它调用一些元数据节点foobar但它不起作用 - 抱怨转换错误。我想也许你应该addNamedMetadataOperand在指令上使用,所以我尝试了:

但它也不喜欢这样。

0 投票
1 回答
245 浏览

f# - 在单声道下运行的 F# 编译器中的堆栈溢出

我正在为我的项目llvm-fs更新工具,所以我安装了新版本的 mono 并尝试编译它。在OS X 或ubuntumono 3.10.0下使用编译失败并出现堆栈溢出:fsharpc 3.1mono 3.2.8fsharpc 3.0

您可以通过执行以下操作在 linux 或 OS X 上重现此错误:

在 windowsfsc 12.0.30815.0下编译完成,没有错误:

这是一个已知问题吗?有什么办法可以解决吗?我尝试将不同的选项传递给单声道运行时,但没有一个导致编译器正常退出。我确实记得过去 mono 在尾调用指令方面遇到了一些问题,但我认为这些问题大部分都已解决。谢谢!