; Tests the integrated assembler for instructions with multiple
; relocations.

; RUN: %if --need=allow_dump --command %p2i -i %s --args -O2 \
; RUN:   | %if --need=allow_dump --command FileCheck %s

; char global_char;
; char *p_global_char;
; void dummy();
; void store_immediate_to_global() { p_global_char = &global_char; }
; void add_in_place() { p_global_char += (int)&global_char; }
; void cmp_global_immediate() { if (p_global_char == &global_char) dummy(); }

@global_char = internal global [1 x i8] zeroinitializer, align 1
@p_global_char = internal global [4 x i8] zeroinitializer, align 4
declare void @dummy()

define internal void @store_immediate_to_global() {
entry:
  %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
  %expanded1 = ptrtoint [1 x i8]* @global_char to i32
  store i32 %expanded1, i32* %p_global_char.bc, align 1
  ret void
}
; CHECK-LABEL: store_immediate_to_global
; CHECK: .long p_global_char
; CHECK: .long global_char

define internal void @add_in_place() {
entry:
  %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
  %0 = load i32, i32* %p_global_char.bc, align 1
  %expanded1 = ptrtoint [1 x i8]* @global_char to i32
  %gep = add i32 %0, %expanded1
  %p_global_char.bc3 = bitcast [4 x i8]* @p_global_char to i32*
  store i32 %gep, i32* %p_global_char.bc3, align 1
  ret void
}
; CHECK-LABEL: add_in_place
; CHECK: .long global_char
; CHECK: .long p_global_char

define internal void @cmp_global_immediate() {
entry:
  %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32*
  %0 = load i32, i32* %p_global_char.bc, align 1
  %expanded1 = ptrtoint [1 x i8]* @global_char to i32
  %cmp = icmp eq i32 %0, %expanded1
  br i1 %cmp, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  tail call void @dummy()
  br label %if.end

if.end:                                           ; preds = %if.then, %entry
  ret void
}
; CHECK-LABEL: cmp_global_immediate
; CHECK: .long p_global_char
; CHECK: .long global_char
; CHECK: .long dummy
