<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;">Thank you for your reply. The default optimization level of llc is -O2.  What's more, </span><span style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif; font-size: 14pt;">I
 found the executable file (.out) produced by clang directly and llvm opt will be the same in most cases, but the object file (.o) will be different, both for -O3 and -Oz.</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; background-color: rgb(255, 255, 255); display: inline !important; font-size: 14pt;"><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Use
 the following commands to produce</span><span style="margin:0px;font-size:14pt;font-family:Calibri, Arial, Helvetica, sans-serif;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color: rgb(255, 255, 255); font-size: 14pt; display: inline !important; font-family: Calibri, Helvetica, sans-serif;"> object
 files (.o)</span><span style="background-color:rgb(255, 255, 255);display:inline !important"><span style="font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"> </span></span></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); display: inline !important;">:</span><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; background-color: rgb(255, 255, 255); display: inline !important; font-size: 14pt;"><span style="margin:0px;font-size:14pt;font-family:Calibri, Arial, Helvetica, sans-serif;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-size:12pt"><span style="margin: 0px; font-size: 14pt; background-color: rgb(255, 255, 255); display: inline !important; font-family: Calibri, Helvetica, sans-serif;">1.
 Produce the </span><span style="margin:0px;font-size:14pt;background-color:rgb(255, 255, 255);display:inline !important"><span style="margin: 0px; background-color: rgb(255, 255, 255); font-size: 14pt; display: inline !important; font-family: Calibri, Helvetica, sans-serif;"><span style="background-color:rgb(255, 255, 255);display:inline !important">object
</span>file </span></span><span style="margin: 0px; font-size: 14pt; background-color: rgb(255, 255, 255); display: inline !important; font-family: Calibri, Helvetica, sans-serif;">of llvm opt -Oz </span></span>
<div style="margin:0px;font-size:12pt">
<blockquote style="margin-top:0px;margin-bottom:0px">
<div style="margin:0px"><b><span style="margin:0px;font-size:15px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:12pt"><i></i></span></span><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>clang++
 -Oz -Xclang -disable-llvm-optzns -emit-llvm -c raytracer.cpp -o raytracer.bc</i></span><i><br>
</i></span></b></div>
<div style="margin:0px"><b><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>opt -Oz
</i></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>raytracer</i></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>.bc -o tmp.bc</i></span><i><br>
</i></b></div>
<div style="margin:0px"><b><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>llc
</i></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>-filetype=obj
</i></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i>tmp.bc -o tmp.o</i></span><i><br>
</i></b></div>
</blockquote>
<div style="margin:0px"><i style="color: inherit; font-family: inherit; font-size: 14pt; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit;"><span style="font-style: normal; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;">2.
 Produce the </span><span style="font-style: normal; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><span style="background-color:rgb(255, 255, 255);display:inline !important">object </span>file </span><span style="font-style: normal; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i style="font-family:Calibri, Arial, Helvetica, sans-serif;background-color:rgb(255, 255, 255)"><span style="margin:0px;font-style:normal;font-size:14pt;font-family:Calibri, Helvetica, sans-serif">of
 clang++ directly</span></i></span></i><br>
</div>
<blockquote style="margin-top:0px;margin-bottom:0px">
<div style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i><i style="color: rgb(50, 49, 48); background-color: rgb(255, 255, 255);"><b>clang++
 -Oz -c r</b></i></i></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i><i style="color: rgb(50, 49, 48); background-color: rgb(255, 255, 255);"><b>​</b></i></i></span><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i><i style="color: rgb(50, 49, 48); background-color: rgb(255, 255, 255);"><b>aytracer.cpp
 -o raytracer.o</b></i></i></span><span style="margin:0px;font-size:14pt"><i><br>
</i></span></span></div>
</blockquote>
<div style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:14pt"><span style="margin: 0px; font-family: Calibri, Helvetica, sans-serif; color: rgb(50, 49, 48); background-color: rgb(255, 255, 255); font-size: 14pt;">3.
 compare </span></span></span></div>
<blockquote style="margin-top:0px;margin-bottom:0px"><span style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><i style=""><i style="color: rgb(50, 49, 48); background-color: rgb(255, 255, 255);"><i style="background-color: rgb(255, 255, 255);"><b>diff
 tmp.o raytracer.o</b></i></i></i></span></span></span></blockquote>
</div>
It always shows 'Binary files tmp.o and raytracer.o differ'.<br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; background-color: rgb(255, 255, 255); display: inline !important; font-size: 14pt;"><span style="margin:0px;font-size:14pt;font-family:Calibri, Arial, Helvetica, sans-serif;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255)">Use the following commands to produce </span><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255);display:inline !important">executable
 files </span><span style="margin:0px;font-size:14pt;background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255);display:inline !important">(.out)</span><span style="margin:0px;background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:Calibri, Helvetica, sans-serif"> </span></span></span><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255);display:inline !important">:</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="margin:0px;font-size:12pt"><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255);display:inline !important">1. Produce the</span><span style="margin:0px;font-size:14pt;background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255);display:inline !important">executable
 file </span></span><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif;background-color:rgb(255, 255, 255);display:inline !important">of llvm opt -Oz </span></span>
<div style="margin:0px;font-size:12pt">
<blockquote style="margin-top:0px;margin-bottom:0px">
<div style="margin:0px"><b><span style="margin:0px;font-size:15px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:12pt"><i></i></span></span><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i>clang++
 -Oz -Xclang -disable-llvm-optzns -emit-llvm -c raytracer.cpp -o raytracer.bc</i></span><i><br>
</i></span></b></div>
<div style="margin:0px"><b><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i>opt -Oz raytracer.bc -o tmp.bc</i></span><i><br>
</i></b></div>
<div style="margin:0px"><b><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i>llc tmp.bc -o tmp.s</i></span><i><br>
</i></b></div>
<div style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i><b>clang++ tmp.s -o tmp.out</b></i></span></span></div>
</blockquote>
<div style="margin:0px"><span style="margin:0px;font-size:14pt"><i><span style="margin:0px;font-style:normal;font-family:Calibri, Helvetica, sans-serif">2. Produce the</span><span style="margin:0px;font-style:normal;font-family:Calibri, Helvetica, sans-serif">executable
 file </span><span style="margin:0px;font-style:normal;font-family:Calibri, Helvetica, sans-serif">of clang++ directly</span></i></span></div>
<blockquote style="margin-top:0px;margin-bottom:0px">
<div style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i><i style="color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)"><b>clang++
 -Oz raytracer.cpp -o raytracer.out</b></i></i></span><span style="margin:0px;font-size:14pt"><i><br>
</i></span></span></div>
</blockquote>
<div style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><span style="margin:0px;font-size:14pt"><span style="margin:0px;font-family:Calibri, Helvetica, sans-serif;color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)">3.
 compare </span></span></span></div>
<blockquote style="margin-top:0px;margin-bottom:0px">
<div style="margin:0px"><span style="margin:0px;font-size:15px;background-color:rgb(255, 255, 255)"><b><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i><i style="color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)"><i style="background-color:rgb(255, 255, 255)">diff
 tmp.out</i></i></i></span><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i><i style="color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)"><i style="background-color:rgb(255, 255, 255)">raytracer</i></i></i></span><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif"><i><i style="color:rgb(50, 49, 48);background-color:rgb(255, 255, 255)"><i style="background-color:rgb(255, 255, 255)">.out</i></i></i></span></b></span></div>
</blockquote>
</div>
<div style="margin:0px;font-size:12pt"><span style="margin:0px;font-size:14pt;font-family:Calibri, Helvetica, sans-serif;color:rgb(50, 49, 48);background-color:rgb(255, 255, 255);display:inline !important">We can find the two files are the same in most cases.
 However, sometimes they are also different. I guess it is because <span style="background-color:rgb(255, 255, 255);display:inline !important">
clang<span> has </span></span>its own optimizations, and these optimizations are not always before the llvm
<span style="background-color:rgb(255, 255, 255);display:inline !important">optimizations</span>. If we use ' <span style="color:rgb(0, 0, 0);font-family:Calibri, Arial, Helvetica, sans-serif;font-size:16px;background-color:rgb(255, 255, 255)"><span style="margin: 0px; font-size: 15px; background-color: rgb(255, 255, 255);"><span style="margin: 0px; font-size: 14pt; font-family: Calibri, Helvetica, sans-serif;"><b style="font-style: italic;">clang
 -Oz -Xclang -disable-llvm-optzns' </b>to disable<span style="font-style: italic; font-weight: bold;"> </span></span></span></span>llvm <span style="background-color:rgb(255, 255, 255);display:inline !important">passes and then use opt to apply llvm passes,
 the order of all optimizations will be different.</span></span></div>
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 14pt;">Jiayu Zhao</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; background-color: rgb(255, 255, 255); display: inline !important; font-size: 14pt;"><span style="margin:0px;font-size:14pt;font-family:Calibri, Arial, Helvetica, sans-serif;color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Mehdi AMINI <joker.eph@gmail.com><br>
<b>Sent:</b> 21 March 2021 4:13<br>
<b>To:</b> Jiayu Zhao <scjzh@leeds.ac.uk><br>
<b>Cc:</b> llvm-dev@lists.llvm.org <llvm-dev@lists.llvm.org><br>
<b>Subject:</b> Re: [llvm-dev] How to produce the same result of clang++ -Oz through opt -Oz</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div dir="ltr">In general you'll find many cases where O3 does not reproduce either.
<div><br>
</div>
<div>Have you tried `llc -O2` in your case? Clang sets the backend optimization level that way for Oz/Os/O2: <a href="https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/BackendUtil.cpp#L430">https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/BackendUtil.cpp#L430</a></div>
<div><br>
</div>
<div>-- </div>
<div>Mehdi</div>
</div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Sat, Mar 20, 2021 at 9:06 PM Jiayu Zhao <<a href="mailto:scjzh@leeds.ac.uk">scjzh@leeds.ac.uk</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-style:solid; border-left-color:rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Hi,</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I can <span style="color:rgb(32,31,30); font-size:15px; background-color:rgb(255,255,255); display:inline">reproduce<span> the results of clang++ -O3 by opt -O3. But I cannot <span style="background-color:rgb(255,255,255); display:inline">reproduce</span><span style="margin:0px"> <span style="background-color:rgb(255,255,255); display:inline">the
 results of<span> </span></span><span style="background-color:rgb(255,255,255); display:inline">clang++ -Oz by opt -Oz.</span></span></span></span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span style="color:rgb(32,31,30); font-size:15px; background-color:rgb(255,255,255); display:inline"><span><span style="margin:0px"><span style="background-color:rgb(255,255,255); display:inline"><br>
</span></span></span></span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span style="color:rgb(32,31,30); font-size:15px; background-color:rgb(255,255,255); display:inline"><span><span style="margin:0px"><span style="background-color:rgb(255,255,255); display:inline">Just see the previous commands I used to produce the result of
 opt -O3.</span></span></span></span></div>
<div id="x_gmail-m_-4523415073551340736appendonsend"></div>
<hr style="display:inline-block; width:98%">
<div id="x_gmail-m_-4523415073551340736divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Mehdi AMINI <<a href="mailto:joker.eph@gmail.com" target="_blank">joker.eph@gmail.com</a>><br>
<b>Sent:</b> 21 March 2021 3:23<br>
<b>To:</b> Jiayu Zhao <<a href="mailto:scjzh@leeds.ac.uk" target="_blank">scjzh@leeds.ac.uk</a>><br>
<b>Cc:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a> <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> Re: [llvm-dev] How to produce the same result of clang++ -Oz through opt -Oz</font>
<div> </div>
</div>
<div>
<div dir="ltr">Hi,
<div><br>
</div>
<div>This is a known issue: clang -O3 is slightly different from `opt -O3` and it is hard to reproduce exactly.  It'd be great to refactor it all so that LLVM exposes a common way for frontend to run the exact same thing.</div>
<div><br>
</div>
<div>-- </div>
<div>Mehdi</div>
<div><br>
</div>
</div>
<br>
<div>
<div dir="ltr">On Sat, Mar 20, 2021 at 9:17 AM Jiayu Zhao via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-style:solid; border-left-color:rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div><span style="font-size:12pt">Dear developers,</span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">I am trying to use 'opt' command with different Optlevels -O3 and -Oz to an IR file to reproduce the results of directly applying clang++ -O3 and -Oz to a source c++ file.</span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">1. Firstly I use the following commands to produce the result of opt -O3:</span><br>
</div>
<div><span style="font-size:12pt"><i><b>clang++ -O3 -Xclang -disable-llvm-optzns -emit-llvm -c raytracer.cpp -o raytracer.bc</b></i></span><i><b><br>
</b></i></div>
<div><span style="font-size:12pt"><i><b>opt -O3 raytracer.bc -o tmp.bc </b></i></span><i><b><br>
</b></i></div>
<div><span style="font-size:12pt"><i><b>llc -O3 tmp.bc -o tmp.s</b></i></span><i><b><br>
</b></i></div>
<div><span style="font-size:12pt"><b><i>clang++ tmp.s -o tmp.out</i></b></span><b><br>
</b></div>
<div><br>
</div>
<div><span style="font-size:12pt">2. Then I use clang -O3 directly:</span><br>
</div>
<div><span style="font-size:12pt"><i><b>clang++ -O3 raytracer.cpp -o raytracer.out</b></i></span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">3. Finally I compare the two files tmp.o and raytracer.o:</span><br>
</div>
<div><span style="font-size:12pt"><i><b>diff tmp.out raytracer.out</b></i></span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">We can find the two files are exactly the same.</span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">However, things are different in -Oz level</span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">1. I use the following commands to produce the result of opt -Oz:</span><br>
</div>
<div><span style="font-size:12pt"><i><b>clang++ -Oz -Xclang -disable-llvm-optzns -emit-llvm -c raytracer.cpp -o raytracer.bc</b></i></span><i><b><br>
</b></i></div>
<div><span style="font-size:12pt"><i><b>opt -Oz raytracer.bc -o tmp.bc </b></i></span><i><b><br>
</b></i></div>
<div><span style="font-size:12pt"><i><b>llc -filetype=obj tmp.bc -o tmp.o (there is no -Oz option for llc)</b></i></span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">2. Then I use clang -Oz directly:</span><br>
</div>
<div><span style="font-size:12pt"><b><i>clang++ -Oz -c raytracer.cpp -o raytracer.o</i></b></span><b><i><br>
</i></b></div>
<div><br>
</div>
<div><span style="font-size:12pt">3. Finally I compare the two files tmp.o and raytracer.o:</span><br>
</div>
<div><span style="font-size:12pt"><b><i>diff tmp.o raytracer.o</i></b></span><b><i><br>
</i></b></div>
<div><br>
</div>
<div><span style="font-size:12pt">It shows 'Binary files tmp.o and raytracer.o differ'</span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">why 'opt -Oz' cannot produce the same result as '</span><span style="color:rgb(0,0,0); font-size:12pt; background-color:rgb(255,255,255); display:inline">clang++ -Oz' and how to solve it ? I use </span><span style="color:rgb(0,0,0); font-size:14px; background-color:rgb(255,255,255); display:inline"><span style="font-size:12pt">LLVM
 10.0.1 and CentOS 7.6.</span></span></div>
<div><br>
</div>
<div><span style="font-size:12pt">I'd very much appreciate if you could help me with this. Thank you.</span><br>
</div>
<div><br>
</div>
<div><span style="font-size:12pt">Kind Regards,</span><br>
</div>
<div><span style="font-size:12pt">Jiayu Zhao</span></div>
<div><br>
</div>
</div>
_______________________________________________<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://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>