<html xmlns:v="urn:schemas-microsoft-com:vml" 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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        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.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.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><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">The problem is that there are some unnamed values in the listing, that are not explicitly printed.  In reality you have<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">define i32 @main(i32 %0, i8** %1) #0 {<o:p></o:p></p>
<p class="MsoNormal">%2:<o:p></o:p></p>
<p class="MsoNormal">  %3 = alloca i32, align 4<o:p></o:p></p>
<p class="MsoNormal">  %4 = alloca i8**, align 8<o:p></o:p></p>
<p class="MsoNormal">  store i32 %0, i32* %3, align 4<o:p></o:p></p>
<p class="MsoNormal">  store i8** %1, i8*** %4, align 8<o:p></o:p></p>
<p class="MsoNormal">  ret i32 0<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Unnamed values are numbered from %0, and the numbers must be consecutive integers.  Producing unnamed values is generally a bad idea for the reasons you’re experiencing.  You can always run the ll file through “opt -instnamer” (e.g. opt
 -instnamer -S < inp.ll > out.ll), and that will rename all instructions (including giving names to the unnamed ones).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:Consolas">-- </span>
<span style="font-size:9.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:Consolas">Krzysztof Parzyszek 
<a href="mailto:kparzysz@quicinc.com"><span style="color:#0563C1">kparzysz@quicinc.com</span></a>   LLVM compiler development<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> <b>On Behalf Of
</b>Kaarthik Alagapan via llvm-dev<br>
<b>Sent:</b> Monday, July 8, 2019 1:32 PM<br>
<b>To:</b> Tim Northover <t.p.northover@gmail.com><br>
<b>Cc:</b> llvm-dev@lists.llvm.org<br>
<b>Subject:</b> [EXT] Re: [llvm-dev] What can cause llc to throw an error for instruction numbering?<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div name="messageBodySection">
<div>
<p class="MsoNormal">Hi Tim, <o:p></o:p></p>
<div>
<p class="MsoNormal">Thank you for that. I was just trying to replicate the branch instruction under a new opcode, so I don’t think that returns a value. Plus the code I was testing out didn’t have a br or my newly added instruction but it still threw that
 error at me. Here’s the IR code I tested:<o:p></o:p></p>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<div>
<p class="MsoNormal">; ModuleID = ‘cc.c’<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">source_filename = “cc.c”<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128”<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">target triple = "x86_64-pc-linux-gnu”<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">; Function Attrs: noinline nounwind optnone uwtable<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">define i32 @main(i32, i8**) #0 {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  %3 = alloca i32, align 4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  %4 = alloca i8**, align 8<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  store i32 %0, i32* %3, align 4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  store i8** %1, i8*** %4, align 8<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  ret i32 0<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false"
 "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float”=“false”
 }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">!llvm.module.flags = !{!0}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">!llvm.ident = !{!1}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">!0 = !{i32 1, !"wchar_size", i32 4}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">!1 = !{!"clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)”}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
<div>
<p class="MsoNormal">I tested a longer IR code and if I fixed one of the instruction number to the expected one (say from %4 to %5), it tells me that the following line’s instruction number must be the nest odd number (that %5 should be %7). I am guessing that
 my modification is causing a value to be produced after each allocation instruction, would that still be under LLParser?<o:p></o:p></p>
</div>
</div>
</div>
<div name="messageSignatureSection">
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Thank you, <o:p></o:p></p>
<div>
<p class="MsoNormal">Kaarthik.<o:p></o:p></p>
</div>
</div>
</div>
<div name="messageReplySection">
<p class="MsoNormal">On Jul 8, 2019, 1:47 PM -0400, Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>>, wrote:<br>
<br>
<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #1ABC9C 1.0pt;padding:0in 0in 0in 8.0pt;margin-left:3.75pt;margin-top:3.75pt;margin-right:3.75pt;margin-bottom:3.75pt">
<p class="MsoNormal">Hi Kaarthik,<br>
<br>
On Mon, 8 Jul 2019 at 18:18, Kaarthik Alagapan via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
<br>
<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #E67E22 1.0pt;padding:0in 0in 0in 8.0pt;margin-left:3.75pt;margin-top:3.75pt;margin-right:3.75pt;margin-bottom:3.75pt">
<p class="MsoNormal">llc: error: llc: check.ll:12:3: error: instruction expected to be numbered '%5'<br>
<br>
%4 = alloca i32, align 4<br>
<br>
<br>
What changes/modification would cause this error to show up? I was thinking that SelectionDAGBuilder would cause this as it parses IR to an optimized version but not sure.<o:p></o:p></p>
</blockquote>
<p class="MsoNormal"><br>
I think only the IR parser (lib/AsmParser/LLParser.cpp) produces that<br>
error, which is well before anything in SelectionDAG runs.<br>
<br>
Did you maybe intend to create an instruction that doesn't produce a<br>
value (like "store" for example) but start off by copying one that did<br>
produce a value? In that case, if your IR was really<br>
<br>
...<br>
%3 = ...<br>
my_shiny_inst i32 %a, %b<br>
%4 = alloca i32<br>
...<br>
<br>
then during parsing LLVM will have decided that my_shiny_inst really<br>
produced %4 (it wouldn't complain about "%4 =" being missing at that<br>
point), but when the next instruction claimed to be %4 it would<br>
produce the error you're describing.<br>
<br>
Obviously the same situation could occur if your instruction really<br>
does produce a value but you either intentionally or accidentally<br>
omitted the "%4 =" in your test-case IR.<br>
<br>
Cheers.<br>
<br>
Tim.<o:p></o:p></p>
</blockquote>
</div>
</div>
</body>
</html>