From d7ad221c161dbf048c1d4f4f3ce3c24bbb203a13 Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Fri, 1 Apr 2016 05:33:11 +0000 Subject: Add a module Hash in the bitcode and the combined index, implementing a kind of "build-id" This is intended to be used for ThinLTO incremental build. Differential Revision: http://reviews.llvm.org/D18213 This is a recommit of r265095 after fixing the Windows issues. From: Mehdi Amini llvm-svn: 265111 --- llvm/test/Bitcode/Inputs/module_hash.ll | 4 ++++ llvm/test/Bitcode/module_hash.ll | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 llvm/test/Bitcode/Inputs/module_hash.ll create mode 100644 llvm/test/Bitcode/module_hash.ll (limited to 'llvm/test/Bitcode') diff --git a/llvm/test/Bitcode/Inputs/module_hash.ll b/llvm/test/Bitcode/Inputs/module_hash.ll new file mode 100644 index 00000000000..1d422c6e817 --- /dev/null +++ b/llvm/test/Bitcode/Inputs/module_hash.ll @@ -0,0 +1,4 @@ +; Needs a function for the combined index to be populated +define void @bar() { + ret void +} diff --git a/llvm/test/Bitcode/module_hash.ll b/llvm/test/Bitcode/module_hash.ll new file mode 100644 index 00000000000..fda6030a903 --- /dev/null +++ b/llvm/test/Bitcode/module_hash.ll @@ -0,0 +1,35 @@ +; Check per module hash. +; RUN: llvm-as -module-hash %s -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD1 +; MOD1: +; RUN: llvm-as -module-hash %p/Inputs/module_hash.ll -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD2 +; MOD2: + +; Check that the hash matches in the combined index. + +; First regenerate the modules with a summary +; RUN: llvm-as -module-hash -module-summary %s -o %t.m1.bc +; RUN: llvm-as -module-hash -module-summary %p/Inputs/module_hash.ll -o %t.m2.bc + +; Recover the hashes from the modules themselves. +; RUN: llvm-bcanalyzer -dump %t.m1.bc | grep ' %t.hash +; RUN: llvm-bcanalyzer -dump %t.m2.bc | grep '> %t.hash + +; Generate the combined index and gather the hashes there. +; RUN: llvm-lto --thinlto-action=thinlink -o - %t.m1.bc %t.m2.bc | llvm-bcanalyzer -dump | grep '> %t.hash + +; Validate the output now, the hahes in the individual modules and the combined index are in the same file. +; RUN: cat %t.hash | FileCheck %s --check-prefix=COMBINED + +; First capture the value of the hash for the two modules. +; COMBINED: +; COMBINED: + +; Validate against the value extracted from the combined index +; COMBINED-DAG: +; COMBINED-DAG: + + +; Need a function for the combined index to be populated. +define void @foo() { + ret void +} -- cgit v1.2.3