<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<div name="messageBodySection">
<div dir="auto">Hi Tim,
<div dir="auto">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:</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class="spark_indent">
<div dir="auto">; ModuleID = ‘cc.c’</div>
<div dir="auto">source_filename = “cc.c”</div>
<div dir="auto">target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128”</div>
<div dir="auto">target triple = "x86_64-pc-linux-gnu”</div>
<div dir="auto"><br>
</div>
<div dir="auto">; Function Attrs: noinline nounwind optnone uwtable</div>
<div dir="auto">define i32 @main(i32, i8**) #0 {</div>
<div dir="auto">  %3 = alloca i32, align 4</div>
<div dir="auto">  %4 = alloca i8**, align 8</div>
<div dir="auto">  store i32 %0, i32* %3, align 4</div>
<div dir="auto">  store i8** %1, i8*** %4, align 8</div>
<div dir="auto">  ret i32 0</div>
<div dir="auto">}</div>
<div dir="auto"><br>
</div>
<div dir="auto">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”
 }</div>
<div dir="auto"><br>
</div>
<div dir="auto">!llvm.module.flags = !{!0}</div>
<div dir="auto">!llvm.ident = !{!1}</div>
<div dir="auto"><br>
</div>
<div dir="auto">!0 = !{i32 1, !"wchar_size", i32 4}</div>
<div dir="auto">!1 = !{!"clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)”}</div>
<div dir="auto"><br>
</div>
</blockquote>
<div dir="auto">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?</div>
</div>
</div>
<div name="messageSignatureSection"><br>
<div dir="auto">Thank you,
<div dir="auto">Kaarthik.</div>
</div>
</div>
<div name="messageReplySection">On Jul 8, 2019, 1:47 PM -0400, Tim Northover <t.p.northover@gmail.com>, wrote:<br>
<blockquote type="cite" class="spark_quote" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">
Hi Kaarthik,<br>
<br>
On Mon, 8 Jul 2019 at 18:18, Kaarthik Alagapan via llvm-dev<br>
<llvm-dev@lists.llvm.org> wrote:<br>
<blockquote type="cite" class="spark_quote" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #e67e22;">
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.<br>
</blockquote>
<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.<br>
</blockquote>
</div>
</body>
</html>