1d7ad221cSMehdi Amini; Check per module hash. 2c8556158SPeter Collingbourne; RUN: opt -module-hash %s -o - | llvm-bcanalyzer -dump -check-hash=foo | FileCheck %s --check-prefix=MOD1 3d7ad221cSMehdi Amini; MOD1: <HASH op0={{[0-9]*}} op1={{[0-9]*}} op2={{[0-9]*}} op3={{[0-9]*}} op4={{[0-9]*}} (match)/> 4c8556158SPeter Collingbourne; RUN: opt -module-hash %p/Inputs/module_hash.ll -o - | llvm-bcanalyzer -dump -check-hash=bar | FileCheck %s --check-prefix=MOD2 5d7ad221cSMehdi Amini; MOD2: <HASH op0={{[0-9]*}} op1={{[0-9]*}} op2={{[0-9]*}} op3={{[0-9]*}} op4={{[0-9]*}} (match)/> 6d7ad221cSMehdi Amini 7d7ad221cSMehdi Amini; Check that the hash matches in the combined index. 8d7ad221cSMehdi Amini 9d7ad221cSMehdi Amini; First regenerate the modules with a summary 1068da426eSMehdi Amini; RUN: opt -module-hash -module-summary %s -o %t.m1.bc 1168da426eSMehdi Amini; RUN: opt -module-hash -module-summary %p/Inputs/module_hash.ll -o %t.m2.bc 12d7ad221cSMehdi Amini 13d7ad221cSMehdi Amini; Recover the hashes from the modules themselves. 14d7ad221cSMehdi Amini; RUN: llvm-bcanalyzer -dump %t.m1.bc | grep '<HASH' > %t.hash 15d7ad221cSMehdi Amini; RUN: llvm-bcanalyzer -dump %t.m2.bc | grep '<HASH' >> %t.hash 16d7ad221cSMehdi Amini 17d7ad221cSMehdi Amini; Generate the combined index and gather the hashes there. 18d7ad221cSMehdi Amini; RUN: llvm-lto --thinlto-action=thinlink -o - %t.m1.bc %t.m2.bc | llvm-bcanalyzer -dump | grep '<HASH ' >> %t.hash 19d7ad221cSMehdi Amini 20d7ad221cSMehdi Amini; Validate the output now, the hahes in the individual modules and the combined index are in the same file. 21d7ad221cSMehdi Amini; RUN: cat %t.hash | FileCheck %s --check-prefix=COMBINED 22d7ad221cSMehdi Amini 23d7ad221cSMehdi Amini; First capture the value of the hash for the two modules. 24c8556158SPeter Collingbourne; 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]*]]/> 25c8556158SPeter Collingbourne; 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]*]]/> 26d7ad221cSMehdi Amini 27d7ad221cSMehdi Amini; Validate against the value extracted from the combined index 28d7ad221cSMehdi Amini; COMBINED-DAG: <HASH abbrevid={{[0-9]*}} op0=[[HASH1_1]] op1=[[HASH1_2]] op2=[[HASH1_3]] op3=[[HASH1_4]] op4=[[HASH1_5]]/> 29d7ad221cSMehdi Amini; COMBINED-DAG: <HASH abbrevid={{[0-9]*}} op0=[[HASH2_1]] op1=[[HASH2_2]] op2=[[HASH2_3]] op3=[[HASH2_4]] op4=[[HASH2_5]]/> 30d7ad221cSMehdi Amini 31*05a358cdSSteven Wutarget datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" 32d7ad221cSMehdi Amini 33d7ad221cSMehdi Amini; Need a function for the combined index to be populated. 34d7ad221cSMehdi Aminidefine void @foo() { 35d7ad221cSMehdi Amini ret void 36d7ad221cSMehdi Amini} 37