Skip to content

Conversation

@maleadt
Copy link
Member

@maleadt maleadt commented Jan 16, 2026

We're currently excepting callers of addExternalModule to provide modules with a DL that contains NI tags:

ERROR: LoadError: LLVM error: Added modules have incompatible data layouts: e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32 (module) vs e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32-ni:10:11:12:13 (jit)

Doing so is invalid and asserts later during compilation:

Assertion failed: (Target.isCompatibleDataLayout(getDataLayout()) && "Can't create a MachineFunction using a Module with a " "Target-incompatible DataLayout attached\n"), function init, file /workspace/srcdir/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp, line 248.

The NI tags are stripped during optimization, and modules passed to addExternalModule are expected to be optimized as they are passed straight to the JIT (as opposed to addModule), so we should make sure to use the correct data layout.

These are supposed to be stripped by optimization.
@maleadt maleadt added compiler:codegen Generation of LLVM IR and native code backport 1.13 labels Jan 16, 2026
@maleadt maleadt requested a review from gbaraldi January 16, 2026 15:19
@gbaraldi
Copy link
Member

Does this need 1.12 port as well?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport 1.13 compiler:codegen Generation of LLVM IR and native code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants