diff options
author | Mehdi Amini <mehdi.amini@apple.com> | 2016-04-01 05:33:11 +0000 |
---|---|---|
committer | Mehdi Amini <mehdi.amini@apple.com> | 2016-04-01 05:33:11 +0000 |
commit | d7ad221c161dbf048c1d4f4f3ce3c24bbb203a13 (patch) | |
tree | 75fa347cdbbe74459f4acec5ab77a20aff7db12c /llvm/test/Bitcode/module_hash.ll | |
parent | eed269329caa92d0bf11c72a2eec0e7143bea18b (diff) | |
download | bcm5719-llvm-d7ad221c161dbf048c1d4f4f3ce3c24bbb203a13.tar.gz bcm5719-llvm-d7ad221c161dbf048c1d4f4f3ce3c24bbb203a13.zip |
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 <mehdi.amini@apple.com>
llvm-svn: 265111
Diffstat (limited to 'llvm/test/Bitcode/module_hash.ll')
-rw-r--r-- | llvm/test/Bitcode/module_hash.ll | 35 |
1 files changed, 35 insertions, 0 deletions
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: <HASH op0={{[0-9]*}} op1={{[0-9]*}} op2={{[0-9]*}} op3={{[0-9]*}} op4={{[0-9]*}} (match)/> +; RUN: llvm-as -module-hash %p/Inputs/module_hash.ll -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD2 +; MOD2: <HASH op0={{[0-9]*}} op1={{[0-9]*}} op2={{[0-9]*}} op3={{[0-9]*}} op4={{[0-9]*}} (match)/> + +; 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 '<HASH' > %t.hash +; RUN: llvm-bcanalyzer -dump %t.m2.bc | grep '<HASH' >> %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 '<HASH ' >> %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: <HASH op0=[[HASH1_1:[0-9]*]] op1=[[HASH1_2:[0-9]*]] op2=[[HASH1_3:[0-9]*]] op3=[[HASH1_4:[0-9]*]] op4=[[HASH1_5:[0-9]*]] (match)/> +; COMBINED: <HASH op0=[[HASH2_1:[0-9]*]] op1=[[HASH2_2:[0-9]*]] op2=[[HASH2_3:[0-9]*]] op3=[[HASH2_4:[0-9]*]] op4=[[HASH2_5:[0-9]*]] (match)/> + +; Validate against the value extracted from the combined index +; COMBINED-DAG: <HASH abbrevid={{[0-9]*}} op0=[[HASH1_1]] op1=[[HASH1_2]] op2=[[HASH1_3]] op3=[[HASH1_4]] op4=[[HASH1_5]]/> +; COMBINED-DAG: <HASH abbrevid={{[0-9]*}} op0=[[HASH2_1]] op1=[[HASH2_2]] op2=[[HASH2_3]] op3=[[HASH2_4]] op4=[[HASH2_5]]/> + + +; Need a function for the combined index to be populated. +define void @foo() { + ret void +} |