Skip to content

Instantly share code, notes, and snippets.

@minjang
Last active November 29, 2016 05:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minjang/b4e865dc88e02abe62ad79feff9763cb to your computer and use it in GitHub Desktop.
Save minjang/b4e865dc88e02abe62ad79feff9763cb to your computer and use it in GitHub Desktop.
%a = call i32 @get()
%b = call i32 @get()
%xor = xor i32 %b, %a
%xor1 = xor i32 %a, %xor
; => %xor1 = %a ^ %xor
; => %xor1 = %a ^ (%b ^ %a) ; a ^ (b ^ a) = b ^ 0
; => %xor1 = %b ^ 0 ; b ^ 0 = b
; => %xor1 = %b ; 이후 %xor1 사용처를 모두 %b로 바꿈
; => %xor1 삭제
%xor2 = xor i32 %xor, %xor1
; => %xor2 = %xor ^ %xor1
; => %xor2 = %xor ^ %b ; %xor1은 이미 %b로 바뀌어졌음
; => %xor2 = (%b ^ %a) ^ %b ; (b ^ a) ^ b = a ^ 0
; => %xor2 = %a ^ 0 ; a ^ 0 = a
; => %xor2 = %a ; 이후 %xor2 사용처를 모두 %a로 바꿈
; => %xor2 삭제
%call2 = call i32 @process(i32 %xor2, i32 %xor1)
; %xor2는 %a로, %xor1는 %b로 바꿈
; => %call2 = call i32 @process(%a, %b)
; %xor도 더 이상 사용되지 않으므로 삭제
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment