<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoPlainText">        I am trying to work through the usage of thinlto for distributed builds.<o:p></o:p></p>
<p class="MsoPlainText">       <o:p></o:p></p>
<p class="MsoPlainText">        Here is the simple thinlto usage, just add -flto=thin everywhere, easy:<o:p></o:p></p>
<p class="MsoPlainText">        <o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o CreateWay_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else CreateWay_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Places_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Places_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o RegBounds_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else RegBounds_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o RegMng_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else RegMng_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Way2_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Way2_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o WayInit_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else WayInit_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Library.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Library.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Random.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Random.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Region_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Region_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o RegWay_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else RegWay_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Way_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Way_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -flto=thin -O3 -o astar.thin  CreateWay_.o Places_.o RegBounds_.o RegMng_.o Way2_.o WayInit_.o Library.o Random.o Region_.o RegWay_.o Way_.o<o:p></o:p></p>
<p class="MsoPlainText">        <o:p></o:p></p>
<p class="MsoPlainText">        <o:p></o:p></p>
<p class="MsoPlainText">        My understanding is for the distributed, you need to do the inital compiles as above,<o:p></o:p></p>
<p class="MsoPlainText">        then a special link to get the thinlto index files, then compile again to get<o:p></o:p></p>
<p class="MsoPlainText">        native files, and then a final link. This looks like the following but<o:p></o:p></p>
<p class="MsoPlainText">        it does not work:<o:p></o:p></p>
<p class="MsoPlainText">        <o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o CreateWay_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else CreateWay_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Places_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Places_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o RegBounds_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else RegBounds_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o RegMng_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else RegMng_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Way2_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Way2_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o WayInit_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else WayInit_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Library.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Library.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Random.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Random.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Region_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Region_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o RegWay_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else RegWay_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++  -flto=thin -O3 -c -o Way_.o -DSPEC_CPU -DNDEBUG -DSPEC_CPU_LITTLE_ENDIAN -Wno-dangling-else Way_.cpp<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -flto=thin -O3 -o thinlto.objects  <span style="background:yellow;mso-highlight:yellow">
-Wl,-plugin-opt,thinlto-index-only=thinlto.objects</span> CreateWay_.o Places_.o RegBounds_.o RegMng_.o Way2_.o WayInit_.o Library.o Random.o Region_.o RegWay_.o Way_.o<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir CreateWay_.o -O3 -o CreateWay_-native.o -fthinlto-index=CreateWay_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir Places_.o -O3 -o Places_-native.o -fthinlto-index=Places_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir RegBounds_.o -O3 -o RegBounds_-native.o -fthinlto-index=RegBounds_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir RegMng_.o -O3 -o RegMng_-native.o -fthinlto-index=RegMng_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir Way2_.o -O3 -o Way2_-native.o -fthinlto-index=Way2_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir WayInit_.o -O3 -o WayInit_-native.o -fthinlto-index=WayInit_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir Library.o -O3 -o Library-native.o -fthinlto-index=Library.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir Random.o -O3 -o Random-native.o -fthinlto-index=Random.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir Region_.o -O3 -o Region_-native.o -fthinlto-index=Region_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir RegWay_.o -O3 -o RegWay_-native.o -fthinlto-index=RegWay_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -c -x ir Way_.o -O3 -o Way_-native.o -fthinlto-index=Way_.o.thinlto.bc<o:p></o:p></p>
<p class="MsoPlainText">        clang++ -o astar CreateWay_-native.o Places_-native.o RegBounds_-native.o RegMng_-native.o Way2_-native.o WayInit_-native.o Library-native.o Random-native.o Region_-native.o RegWay_-native.o Way_-native.o<o:p></o:p></p>
<p class="MsoPlainText">        <span style="background:aqua;mso-highlight:aqua">
Library-native.o:(.data+0x0): undefined reference to `vtable for regwayobj'</span><o:p></o:p></p>
<p class="MsoPlainText">        clang-8: error: linker command failed with exit code 1 (use -v to see invocation)<o:p></o:p></p>
<p class="MsoPlainText">        make: *** [astar] Error 1<o:p></o:p></p>
<p class="MsoPlainText">        <o:p></o:p></p>
<p class="MsoPlainText">        Did I miss a step?         <o:p></o:p></p>
<p class="MsoPlainText">     <o:p></o:p></p>
<p class="MsoPlainText">    <o:p></o:p></p>
</div>
</body>
</html>