#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ __emit_expression_range(int /*<<< orphan*/,
                                           int /*<<< orphan*/);
int /*<<< orphan*/ foo(int /*<<< orphan*/, char *, ...);
void test_multiple_ordinary_maps(void) {
  __emit_expression_range(
      0,
      foo(0,
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789"));
  __emit_expression_range(
      0,
      foo(0,
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789012345"
          "67890123456789012345678901234567890123456789012345678901234567890123"
          "45678901234567890123456789012345678901234567890123456789012345678901"
          "23456789012345678901234567890123456789012345678901234567890123456789"
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789012345"
          "67890123456789012345678901234567890123456789012345678901234567890123"
          "45678901234567890123456789012345678901234567890123456789012345678901"
          "23456789012345678901234567890123456789012345678901234567890123456789"
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789012345"
          "67890123456789012345678901234567890123456789012345678901234567890123"
          "45678901234567890123456789012345678901234567890123456789012345678901"
          "23456789012345678901234567890123456789012345678901234567890123456789"
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789012345"
          "67890123456789012345678901234567890123456789012345678901234567890123"
          "45678901234567890123456789012345678901234567890123456789012345678901"
          "23456789012345678901234567890123456789012345678901234567890123456789"
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789012345"
          "67890123456789012345678901234567890123456789012345678901234567890123"
          "45678901234567890123456789012345678901234567890123456789012345678901"
          "23456789012345678901234567890123456789012345678901234567890123456789"
          "01234567890123456789012345678901234567890123456789012345678901234567"
          "89012345678901234567890123456789012345678901234567890123456789012345"
          "67890123456789012345678901234567890123456789012345678901234567890123"
          "45678901234567890123456789012345678901234567890123456789012345678901"
          "23456789012345678901234567890123456789012345678901234567890123456789"
          "01234567890123456789012345678901234567890123456789",
          0));
}


x86 assembly (clang, -O0):
<test_multiple_ordinary_maps>:
push   %rbp
mov    %rsp,%rbp
xor    %edi,%edi
lea    0x167b(%rip),%rsi
mov    $0x0,%al
call   1030 <foo@plt>
mov    %eax,%esi
xor    %edi,%edi
call   1040 <__emit_expression_range@plt>
xor    %edx,%edx
lea    0xeba(%rip),%rsi
mov    %edx,%edi
mov    $0x0,%al
call   1030 <foo@plt>
mov    %eax,%esi
xor    %edi,%edi
call   1040 <__emit_expression_range@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_multiple_ordinary_maps>:
push   %rax
lea    0x1680(%rip),%rsi
xor    %edi,%edi
xor    %eax,%eax
call   1030 <foo@plt>
xor    %edi,%edi
mov    %eax,%esi
call   1040 <__emit_expression_range@plt>
lea    0xebf(%rip),%rsi
xor    %edi,%edi
xor    %edx,%edx
xor    %eax,%eax
call   1030 <foo@plt>
xor    %edi,%edi
mov    %eax,%esi
pop    %rax
jmp    1040 <__emit_expression_range@plt>

LLVM IR (-O0):
@.str = [131 x i8] c"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\00"
@.str.1 = [2091 x i8] c"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\00"
define void @test_multiple_ordinary_maps() {
%1 = call i32 (i32, i8*, ...) @foo(i32 0, i8* getelementptr inbounds ([131 x i8], [131 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @__emit_expression_range(i32 0, i32 %1)
%3 = call i32 (i32, i8*, ...) @foo(i32 0, i8* getelementptr inbounds ([2091 x i8], [2091 x i8]* @.str.1, i64 0, i64 0), i32 0)
%4 = call i32 @__emit_expression_range(i32 0, i32 %3)
ret void
}

LLVM IR (-O2):
@.str = [131 x i8] c"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\00"
@.str.1 = [2091 x i8] c"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\00"
define void @test_multiple_ordinary_maps() {
%1 = tail call i32 (i32, i8*, ...) @foo(i32 0, i8* getelementptr inbounds ([131 x i8], [131 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @__emit_expression_range(i32 0, i32 %1)
%3 = tail call i32 (i32, i8*, ...) @foo(i32 0, i8* getelementptr inbounds ([2091 x i8], [2091 x i8]* @.str.1, i64 0, i64 0), i32 0)
%4 = tail call i32 @__emit_expression_range(i32 0, i32 %3)
ret void
}