#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 **);
void Heading(void) {
  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
lea    0x2f15(%rip),%rdi
call   1030 <msglist@plt>
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 void @Heading() {
%1 = call i32 @msglist(i8** getelementptr inbounds ([15 x i8*], [15 x i8*]* @Heading.head, i64 0, i64 0))
ret void
}

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 void @Heading() {
%1 = tail call i32 @msglist(i8** getelementptr inbounds ([15 x i8*], [15 x i8*]* @Heading.head, i64 0, i64 0))
ret void
}