<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:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il
        {mso-style-name:gmail-m_7933712474072841744gmail-m_6008515586581161835gmail-m_5400992142184465009m_4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il;}
p.gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext, li.gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext, div.gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext
        {mso-style-name:gmail-m_7933712474072841744gmail-m_6008515586581161835gmail-m_5400992142184465009m_4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Thanks very much , that did resolve my problem.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Teresa Johnson <tejohnson@google.com><br>
<b>Date: </b>Wednesday, January 9, 2019 at 7:43 AM<br>
<b>To: </b>David Callahan <dcallahan@fb.com><br>
<b>Cc: </b>LLVM Dev Mailing list <llvm-dev@lists.llvm.org><br>
<b>Subject: </b>Re: [llvm-dev] distributed thinlto usage<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Mystery solved - the short answer is to add "-Xclang -fno-lto-unit" to your compile steps (-c -flto=thin). I had forgotten that we add this for our internal distributed builds. Another option would be to add "-Wl,-plugin-opt,obj-path=astar.o"
 to the thin link step, and add the resulting (native) astar.o file to the final link.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I am working on getting the default changed (D53890/D53891), since this is only needed for CFI [1], but currently by default each module is split into two - a regular LTO module containing vtable defs and a thin LTO module containing the
 rest. This is required by CFI so that the vtables can be globally laid out via regular LTO. If you don't disable this splitting (via "-Xclang -fno-lto-unit"), then you need to capture the result of this regular LTO portion via the obj-path plugin option and
 link it as well. However, unless you plan to do CFI this is just giving your builds extra unnecessary overhead (which is why the default will change).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> [1] Also currently for whole program devirtualization which is enabled for CFI, or separately via options - although I have a patch out for review to do WPD with ThinLTO alone (D55153).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Teresa<o:p></o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jan 8, 2019 at 5:28 PM Teresa Johnson <<a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal" style="margin-bottom:12.0pt">Ok thanks for checking. I'll try to repro tomorrow morning probably and get back. Teresa<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jan 8, 2019, 5:03 PM David Callahan <<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in" id="gmail-m_7933712474072841744gmail-m_6008515586581161835gmail-m_5400992142184465009gmail_block_quote0">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Fails with gold too:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Library-native.o:Library.cpp:regway: error: undefined reference to 'vtable for regwayobj'<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">/home/dcallahan/fbsource/fbcode/third-party-buck/platform007/tools/binutils/bin/gold/ld: the vtable symbol may be undefined because the class is missing its key function<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">clang-8: error: linker command failed with exit code 1 (use -v to see invocation)<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Teresa Johnson <<a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a>><br>
<b>Date: </b>Tuesday, January 8, 2019 at 4:57 PM</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;color:black"><br>
<b>To: </b>David Callahan <<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>><br>
<b>Cc: </b>LLVM Dev Mailing list <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject: </b>Re: [llvm-dev] distributed thinlto usage</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Tue, Jan 8, 2019 at 4:36 PM David Callahan <<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks Teresa<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Yes it is astar, happen to send a tar of the sources but they are just copies from the spec distribution<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">The ld command is:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">GNU ld (GNU Binutils) 2.29.1<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Could you try with either a recent gold or lld to see if it still reproduces? We don't test llvm LTO with GNU ld, so I can't be sure there are no issues there.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks for the guidance on path names. The prefix-replace just effects the string written to the object files right? So we could post-process that file with other tools as well,
 correct?<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Correct.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Teresa<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks again<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt">--david<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Teresa Johnson <<a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a>><br>
<b>Date: </b>Tuesday, January 8, 2019 at 4:11 PM<br>
<b>To: </b>David Callahan <<a href="mailto:dcallahan@fb.com" target="_blank">dcallahan@fb.com</a>><br>
<b>Cc: </b>LLVM Dev Mailing list <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject: </b>Re: [llvm-dev] distributed thinlto usage</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi David,
<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">That looks basically right, so I am not sure offhand what is wrong. Looks like this is the astar spec binary, so I will try to repro it tomorrow morning. What linker are you using?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Note that if your link involves archives of .a files, you will want to ensure that the final native link includes only those files selected by the linker. That is output in the
 file given to the "-Wl,-plugin-opt,thinlto-index-only=files.out" option. What we do is use that in combination with the '-Wl,-plugin-opt,<span class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il">thinlto</span>-prefix-replace=path1;path2'
 option to simplify the final link invocation. Specifically, if you do something like:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> "-Wl,-plugin-opt,<span class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il">thinlto</span>-<span class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il">index</span>-<span class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il">only</span>=files.out
 -Wl,-plugin-opt,<span class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il">thinlto</span>-prefix-replace=path1;path2"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">for the indexing link step, the output files from the thin link will be written to a directory tree with the original path substring "path1" replaced with "path2", and the object
 names in the file emitted by thinlto-index-only= ("files.out" in the above example), will have their path names adjusted to the new path as well - if your native .o files use the new path then this is a simple way of getting a list of input files for the final
 link, which can be passed via @files.out to gold (note the gold manpage does not document "@" but the gnu ld manpage does).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I.e. something like:<br>
<br>
clang++ -flto=thin -O3 -c -o path1/foo.o foo.cpp <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">...<br>
clang++ -flto=thin -O3 -Wl,-plugin-opt,thinlto-index-only=files.out -Wl,-plugin-opt,<span class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102m7798277218057141552gmail-il">thinlto</span>-prefix-replace=path1;path2"
 foo.o ...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">clang++ -c -x ir path1/foo.o -O3 -o path2/foo.o -fthinlto-index=path2/foo.o.thinlto.bc<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">clang++ -flto=thin -O3 -o a.out @files.out<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">But again, that should only come into play if you are linking archives of bitcode files...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Teresa<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Tue, Jan 8, 2019 at 2:38 PM David Callahan via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        I am trying to work through the usage of thinlto for distributed builds.<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
       <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        Here is the simple thinlto usage, just add -flto=thin everywhere, easy:<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        My understanding is for the distributed, you need to do the inital compiles as above,<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        then a special link to get the thinlto index files, then compile again to get<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        native files, and then a final link. This looks like the following but<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        it does not work:<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -flto=thin -O3 -o thinlto.objects  <span style="background: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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir CreateWay_.o -O3 -o CreateWay_-native.o -fthinlto-index=CreateWay_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir Places_.o -O3 -o Places_-native.o -fthinlto-index=Places_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir RegBounds_.o -O3 -o RegBounds_-native.o -fthinlto-index=RegBounds_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir RegMng_.o -O3 -o RegMng_-native.o -fthinlto-index=RegMng_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir Way2_.o -O3 -o Way2_-native.o -fthinlto-index=Way2_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir WayInit_.o -O3 -o WayInit_-native.o -fthinlto-index=WayInit_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir Library.o -O3 -o Library-native.o -fthinlto-index=Library.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir Random.o -O3 -o Random-native.o -fthinlto-index=Random.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir Region_.o -O3 -o Region_-native.o -fthinlto-index=Region_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir RegWay_.o -O3 -o RegWay_-native.o -fthinlto-index=RegWay_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang++ -c -x ir Way_.o -O3 -o Way_-native.o -fthinlto-index=Way_.o.thinlto.bc<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        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="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        <span style="background:aqua">Library-native.o:(.data+0x0): undefined reference to `vtable for regwayobj'</span><o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        clang-8: error: linker command failed with exit code 1 (use -v to see invocation)<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        make: *** [astar] Error 1<o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
        Did I miss a step?         <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
     <o:p></o:p></p>
<p class="gmail-m7933712474072841744gmail-m6008515586581161835gmail-m5400992142184465009m4421731697753909132gmail-m-1186397316812610102gmail-m7798277218057141552gmail-m-3179742789606246467msoplaintext">
    <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=lFyiPUrFdOHdaobP7i4hoA&m=PMzAAS8FAubOZvuhIQzaEYDhzjepsxFzEzBO833EKHk&s=pyBcmafkxpxgWdXN4yeh1Uzs31MuZzMyRSApBR-wRpc&e=" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">--
<o:p></o:p></p>
<div>
<div>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td nowrap="" style="border:none;border-top:solid #D50F25 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555">Teresa Johnson |</span><o:p></o:p></p>
</td>
<td nowrap="" style="border:none;border-top:solid #3369E8 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555"> Software Engineer |</span><o:p></o:p></p>
</td>
<td nowrap="" style="border:none;border-top:solid #009939 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</span><o:p></o:p></p>
</td>
<td nowrap="" style="border:none;border-top:solid #EEB211 1.5pt;padding:0in 0in 0in 0in">
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">--
<o:p></o:p></p>
<div>
<div>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td nowrap="" style="border:none;border-top:solid #D50F25 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555">Teresa Johnson |</span><o:p></o:p></p>
</td>
<td nowrap="" style="border:none;border-top:solid #3369E8 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555"> Software Engineer |</span><o:p></o:p></p>
</td>
<td nowrap="" style="border:none;border-top:solid #009939 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</span><o:p></o:p></p>
</td>
<td nowrap="" style="border:none;border-top:solid #EEB211 1.5pt;padding:0in 0in 0in 0in">
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td nowrap="" style="border:none;border-top:solid #D50F25 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555">Teresa Johnson |<o:p></o:p></span></p>
</td>
<td nowrap="" style="border:none;border-top:solid #3369E8 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555"> Software Engineer |<o:p></o:p></span></p>
</td>
<td nowrap="" style="border:none;border-top:solid #009939 1.5pt;padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#555555"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |<o:p></o:p></span></p>
</td>
<td nowrap="" style="border:none;border-top:solid #EEB211 1.5pt;padding:0in 0in 0in 0in">
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>