unsigned int *_ZN5small3PrvEPPiS0_(struct l_class_OC_small *llvm_cbe_this,
                                   unsigned int **llvm_cbe_i,
                                   unsigned int *llvm_cbe_q) {
  unsigned int *llvm_cbe_retval;
  struct l_class_OC_small *llvm_cbe_this_2e_addr;
  unsigned int **llvm_cbe_i_2e_addr;
  unsigned int *llvm_cbe_q_2e_addr;
  struct l_class_OC_small *llvm_cbe_this1;
  unsigned int *llvm_cbe_tmp;
  unsigned int **llvm_cbe_tmp2;
  unsigned int *llvm_cbe_tmp3;
  unsigned int *llvm_cbe_tmp__64;
  *(&llvm_cbe_this_2e_addr) = llvm_cbe_this;
  *(&llvm_cbe_i_2e_addr) = llvm_cbe_i;
  *(&llvm_cbe_q_2e_addr) = llvm_cbe_q;
  llvm_cbe_this1 = *(&llvm_cbe_this_2e_addr);
  llvm_cbe_tmp = *(&llvm_cbe_q_2e_addr);
  llvm_cbe_tmp2 = *(&llvm_cbe_i_2e_addr);
  *llvm_cbe_tmp2 = llvm_cbe_tmp;
  llvm_cbe_tmp3 = *(&llvm_cbe_q_2e_addr);
  *(&llvm_cbe_retval) = llvm_cbe_tmp3;
  llvm_cbe_tmp__64 = *(&llvm_cbe_retval);
  return llvm_cbe_tmp__64;
}


x86 assembly (clang, -O0):
<_ZN5small3PrvEPPiS0_>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x50(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x38(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<_ZN5small3PrvEPPiS0_>:
mov    %rdx,%rax
mov    %rdx,(%rsi)
ret

LLVM IR (-O0):
%struct.l_class_OC_small = type opaque
define i32* @_ZN5small3PrvEPPiS0_(%struct.l_class_OC_small* %0, i32** %1, i32* %2) {
%4 = alloca %struct.l_class_OC_small*
%5 = alloca i32**
%6 = alloca i32*
%7 = alloca i32*
%8 = alloca %struct.l_class_OC_small*
%9 = alloca i32**
%10 = alloca i32*
%11 = alloca %struct.l_class_OC_small*
%12 = alloca i32*
%13 = alloca i32**
%14 = alloca i32*
%15 = alloca i32*
store %struct.l_class_OC_small* %0, %struct.l_class_OC_small** %4
store i32** %1, i32*** %5
store i32* %2, i32** %6
%16 = load %struct.l_class_OC_small*, %struct.l_class_OC_small** %4
store %struct.l_class_OC_small* %16, %struct.l_class_OC_small** %8
%17 = load i32**, i32*** %5
store i32** %17, i32*** %9
%18 = load i32*, i32** %6
store i32* %18, i32** %10
%19 = load %struct.l_class_OC_small*, %struct.l_class_OC_small** %8
store %struct.l_class_OC_small* %19, %struct.l_class_OC_small** %11
%20 = load i32*, i32** %10
store i32* %20, i32** %12
%21 = load i32**, i32*** %9
store i32** %21, i32*** %13
%22 = load i32*, i32** %12
%23 = load i32**, i32*** %13
store i32* %22, i32** %23
%24 = load i32*, i32** %10
store i32* %24, i32** %14
%25 = load i32*, i32** %14
store i32* %25, i32** %7
%26 = load i32*, i32** %7
store i32* %26, i32** %15
%27 = load i32*, i32** %15
ret i32* %27
}

LLVM IR (-O2):
%struct.l_class_OC_small = type opaque
define i32* @_ZN5small3PrvEPPiS0_(%struct.l_class_OC_small* nocapture readnone %0, i32** nocapture writeonly %1, i32* returned %2) {
store i32* %2, i32** %1
ret i32* %2
}