2017-01-13 7 views
1

getOperand()を正しく理解したかっただけです。これは、逆の順序でgetOperand()の戻りオペランドのように思える:LLVM内の命令の書き込みまたは読み取り

ので、私が持っている場合:私が間違っている場合

%1 = mul nsw i32 7, 2   # The c source code is: a = 7; b = a*2 
ret i32 %1      # The c source code is: return a; 

は私を修正:最初の命令で

、getOperand(0)私に 'i32'(読まれているもの)とgetOpernad(1) 'nsw'(書かれているもの)を与えます。第2の命令で

、唯一のオペランドが読み取られているI32です。

だから私はそれが最後のオペランドで、命令が何かに書いている場合は、私の質問は、あると思いますか?

答えて

1

mul命令は乗算であるので、いや、そのオペランドは、それらのC式に対応していません。 allocastoreの代わりにこの命令が表示されます。これは、あなたのコードが定数式であることを認識して伝播したためです。そしてAFAIK、それを止めるために何もできません - Clangは-O0であっても一定の伝播を行います。

関連する問題