From 7643d98d8685fc9159b0221a6910b8f4ef872df5 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Mon, 1 Aug 2016 22:23:24 +0000 Subject: [Orc] Fix common symbol support in ORC. Common symbol support in ORC was broken in r270716 when the symbol resolution rules in RuntimeDyld were changed. With the switch to lazily materialized symbols in r277386, common symbols can be supported by having RuntimeDyld::emitCommonSymbols search for (but not materialize!) definitions elsewhere in the logical dylib. This patch adds the 'Common' flag to JITSymbolFlags, and the necessary check to RuntimeDyld::emitCommonSymbols. llvm-svn: 277397 --- llvm/test/ExecutionEngine/OrcLazy/common-symbols.ll | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 llvm/test/ExecutionEngine/OrcLazy/common-symbols.ll (limited to 'llvm/test/ExecutionEngine') diff --git a/llvm/test/ExecutionEngine/OrcLazy/common-symbols.ll b/llvm/test/ExecutionEngine/OrcLazy/common-symbols.ll new file mode 100644 index 00000000000..ece490ae8c8 --- /dev/null +++ b/llvm/test/ExecutionEngine/OrcLazy/common-symbols.ll @@ -0,0 +1,18 @@ +; RUN: lli -jit-kind=orc-lazy %s | FileCheck %s +; +; CHECK: 7 + +@x = common global i32 0, align 4 +@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 + +define i32 @main() { +entry: + %retval = alloca i32, align 4 + store i32 0, i32* %retval, align 4 + store i32 7, i32* @x, align 4 + %0 = load i32, i32* @x, align 4 + %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %0) + ret i32 0 +} + +declare i32 @printf(i8*, ...) -- cgit v1.2.3