#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*/ msglist(char **);
Heading() {
  static char *head[] = {
      "Users are invited to help debug and augment this program so it will",
      "cope with unanticipated and newly uncovered arithmetic pathologies.\n",
      "Please send suggestions and interesting results to",
      "\tRichard Karpinski",
      "\tComputer Center U-76",
      "\tUniversity of California",
      "\tSan Francisco, CA 94143-0704, USA\n",
      "In doing so, please include the following information:",
      "\tPrecision:\tdouble;",
      "\tVersion:\t10 February 1989;",
      "\tComputer:\n",
      "\tCompiler:\n",
      "\tOptimization level:\n",
      "\tOther relevant compiler options:",
      0};
  msglist(head);
}


x86 assembly (clang, -O0):
<Heading>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
lea    0x2f11(%rip),%rdi
call   1030 <msglist@plt>
mov    -0x4(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Heading>:
lea    0x2f19(%rip),%rdi
jmp    1030 <msglist@plt>

LLVM IR (-O0):
@Heading.head = internal global [15 x i8*] [i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.13, i32 0, i32 0), i8* null]
@.str = [68 x i8] c"Users are invited to help debug and augment this program so it will\00"
@.str.1 = [69 x i8] c"cope with unanticipated and newly uncovered arithmetic pathologies.\0A\00"
@.str.2 = [51 x i8] c"Please send suggestions and interesting results to\00"
@.str.3 = [19 x i8] c"\09Richard Karpinski\00"
@.str.4 = [22 x i8] c"\09Computer Center U-76\00"
@.str.5 = [26 x i8] c"\09University of California\00"
@.str.6 = [36 x i8] c"\09San Francisco, CA 94143-0704, USA\0A\00"
@.str.7 = [55 x i8] c"In doing so, please include the following information:\00"
@.str.8 = [20 x i8] c"\09Precision:\09double;\00"
@.str.9 = [28 x i8] c"\09Version:\0910 February 1989;\00"
@.str.10 = [12 x i8] c"\09Computer:\0A\00"
@.str.11 = [12 x i8] c"\09Compiler:\0A\00"
@.str.12 = [22 x i8] c"\09Optimization level:\0A\00"
@.str.13 = [34 x i8] c"\09Other relevant compiler options:\00"
define i32 @Heading() {
%1 = alloca i32
%2 = call i32 @msglist(i8** getelementptr inbounds ([15 x i8*], [15 x i8*]* @Heading.head, i64 0, i64 0))
%3 = load i32, i32* %1
ret i32 %3
}

LLVM IR (-O2):
@Heading.head = internal global [15 x i8*] [i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.13, i32 0, i32 0), i8* null]
@.str = [68 x i8] c"Users are invited to help debug and augment this program so it will\00"
@.str.1 = [69 x i8] c"cope with unanticipated and newly uncovered arithmetic pathologies.\0A\00"
@.str.2 = [51 x i8] c"Please send suggestions and interesting results to\00"
@.str.3 = [19 x i8] c"\09Richard Karpinski\00"
@.str.4 = [22 x i8] c"\09Computer Center U-76\00"
@.str.5 = [26 x i8] c"\09University of California\00"
@.str.6 = [36 x i8] c"\09San Francisco, CA 94143-0704, USA\0A\00"
@.str.7 = [55 x i8] c"In doing so, please include the following information:\00"
@.str.8 = [20 x i8] c"\09Precision:\09double;\00"
@.str.9 = [28 x i8] c"\09Version:\0910 February 1989;\00"
@.str.10 = [12 x i8] c"\09Computer:\0A\00"
@.str.11 = [12 x i8] c"\09Compiler:\0A\00"
@.str.12 = [22 x i8] c"\09Optimization level:\0A\00"
@.str.13 = [34 x i8] c"\09Other relevant compiler options:\00"
define i32 @Heading() {
%1 = tail call i32 @msglist(i8** getelementptr inbounds ([15 x i8*], [15 x i8*]* @Heading.head, i64 0, i64 0))
ret i32 undef
}