#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*/ printf(char *);
int /*<<< orphan*/ show_version();
void help() {
  show_version();
  printf("QCC C Compiler - Copyright (C) 2001-2006 Fabrice Bellard, 2007 Rob "
         "Landley, 2015 Bruce Ewing\n"
         "usage: tcc [-v] [-c] [-o outfile] [-Bdir] [-bench] [-Idir] "
         "[-Dsym[=val]] [-Usym]\n"
         "     [-Wwarn] [-g] [-b] [-bt N] [-Ldir] [-llib] [-shared] [-static]\n"
         "     [infile1 infile2...] [-run infile args...]\n"
         "\n"
         "General options:\n"
         "  -v    Verbose compile, repeat for more verbosity\n"
         "  -c    compile only - generate an object file\n"
         "  -o outfile  set output filename\n"
         "  -Bdir    set tcc internal library path\n"
         "  -bench   output compilation statistics\n"
         "  -run  run compiled source\n"
         "  -fflag   set or reset (with 'no-' prefix) 'flag' (see man page)\n"
         "  -Wwarning   set or reset (with 'no-' prefix) 'warning' (see man "
         "page)\n"
         "  -w    disable all warnings\n"
         "Preprocessor options:\n"
         "  -Idir    add include path 'dir'\n"
         "  -Dsym[=val] define 'sym' with value 'val'\n"
         "  -Usym    undefine 'sym'\n"
         "  -E    preprocess only\n"
         "Linker options:\n"
         "  -Ldir    add library path 'dir'\n"
         "  -llib    link with dynamic or static library 'lib'\n"
         "  -shared  generate a shared library\n"
         "  -static  static linking\n"
         "  -rdynamic   export all global symbols to dynamic linker\n"
         "  -r    output relocatable .o file\n"
         "Debugger options:\n"
         "  -g    generate runtime debug info\n");
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1030 <show_version@plt>
lea    0xece(%rip),%rdi
call   1040 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rax
xor    %eax,%eax
call   1030 <show_version@plt>
lea    0xed1(%rip),%rdi
pop    %rax
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [1181 x i8] c"QCC C Compiler - Copyright (C) 2001-2006 Fabrice Bellard, 2007 Rob Landley, 2015 Bruce Ewing\0Ausage: tcc [-v] [-c] [-o outfile] [-Bdir] [-bench] [-Idir] [-Dsym[=val]] [-Usym]\0A [-Wwarn] [-g] [-b] [-bt N] [-Ldir] [-llib] [-shared] [-static]\0A [infile1 infile2...] [-run infile args...]\0A\0AGeneral options:\0A -v Verbose compile, repeat for more verbosity\0A -c compile only - generate an object file\0A -o outfile set output filename\0A -Bdir set tcc internal library path\0A -bench output compilation statistics\0A -run run compiled source\0A -fflag set or reset (with 'no-' prefix) 'flag' (see man page)\0A -Wwarning set or reset (with 'no-' prefix) 'warning' (see man page)\0A -w disable all warnings\0APreprocessor options:\0A -Idir add include path 'dir'\0A -Dsym[=val] define 'sym' with value 'val'\0A -Usym undefine 'sym'\0A -E preprocess only\0ALinker options:\0A -Ldir add library path 'dir'\0A -llib link with dynamic or static library 'lib'\0A -shared generate a shared library\0A -static static linking\0A -rdynamic export all global symbols to dynamic linker\0A -r output relocatable .o file\0ADebugger options:\0A -g generate runtime debug info\0A\00"
define void @help() {
%1 = call i32 (...) @show_version()
%2 = call i32 @printf(i8* getelementptr inbounds ([1181 x i8], [1181 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1180 x i8] c"QCC C Compiler - Copyright (C) 2001-2006 Fabrice Bellard, 2007 Rob Landley, 2015 Bruce Ewing\0Ausage: tcc [-v] [-c] [-o outfile] [-Bdir] [-bench] [-Idir] [-Dsym[=val]] [-Usym]\0A [-Wwarn] [-g] [-b] [-bt N] [-Ldir] [-llib] [-shared] [-static]\0A [infile1 infile2...] [-run infile args...]\0A\0AGeneral options:\0A -v Verbose compile, repeat for more verbosity\0A -c compile only - generate an object file\0A -o outfile set output filename\0A -Bdir set tcc internal library path\0A -bench output compilation statistics\0A -run run compiled source\0A -fflag set or reset (with 'no-' prefix) 'flag' (see man page)\0A -Wwarning set or reset (with 'no-' prefix) 'warning' (see man page)\0A -w disable all warnings\0APreprocessor options:\0A -Idir add include path 'dir'\0A -Dsym[=val] define 'sym' with value 'val'\0A -Usym undefine 'sym'\0A -E preprocess only\0ALinker options:\0A -Ldir add library path 'dir'\0A -llib link with dynamic or static library 'lib'\0A -shared generate a shared library\0A -static static linking\0A -rdynamic export all global symbols to dynamic linker\0A -r output relocatable .o file\0ADebugger options:\0A -g generate runtime debug info\00"
define void @help() {
%1 = tail call i32 (...) @show_version()
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1180 x i8], [1180 x i8]* @str, i64 0, i64 0))
ret void
}