#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 *);
void blogc_print_help(void) {
  printf("usage:\n"
         "    blogc "
         "[-h] [-v] [-d] [-i] [-l [-e SOURCE]] [-D KEY=VALUE ...] [-p KEY]\n"
         "          [-t TEMPLATE] [-o OUTPUT] [SOURCE ...] - A blog compiler.\n"
         "\n"
         "positional arguments:\n"
         "    SOURCE        source file(s)\n"
         "\n"
         "optional arguments:\n"
         "    -h            show this help message and exit\n"
         "    -v            show version and exit\n"
         "    -d            enable debug\n"
         "    -i            read list of source files from standard input\n"
         "    -l            build listing page, from multiple source files\n"
         "    -e SOURCE     source file with content for listing page. "
         "requires '-l'\n"
         "    -D KEY=VALUE  set global variable\n"
         "    -p KEY        show the value of a variable after source parsing "
         "and exit\n"
         "    -t TEMPLATE   template file\n"
         "    -o OUTPUT     output file\n");
}


x86 assembly (clang, -O0):
<blogc_print_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<blogc_print_help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [730 x i8] c"usage:\0A blogc [-h] [-v] [-d] [-i] [-l [-e SOURCE]] [-D KEY=VALUE ...] [-p KEY]\0A [-t TEMPLATE] [-o OUTPUT] [SOURCE ...] - A blog compiler.\0A\0Apositional arguments:\0A SOURCE source file(s)\0A\0Aoptional arguments:\0A -h show this help message and exit\0A -v show version and exit\0A -d enable debug\0A -i read list of source files from standard input\0A -l build listing page, from multiple source files\0A -e SOURCE source file with content for listing page. requires '-l'\0A -D KEY=VALUE set global variable\0A -p KEY show the value of a variable after source parsing and exit\0A -t TEMPLATE template file\0A -o OUTPUT output file\0A\00"
define void @blogc_print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([730 x i8], [730 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [729 x i8] c"usage:\0A blogc [-h] [-v] [-d] [-i] [-l [-e SOURCE]] [-D KEY=VALUE ...] [-p KEY]\0A [-t TEMPLATE] [-o OUTPUT] [SOURCE ...] - A blog compiler.\0A\0Apositional arguments:\0A SOURCE source file(s)\0A\0Aoptional arguments:\0A -h show this help message and exit\0A -v show version and exit\0A -d enable debug\0A -i read list of source files from standard input\0A -l build listing page, from multiple source files\0A -e SOURCE source file with content for listing page. requires '-l'\0A -D KEY=VALUE set global variable\0A -p KEY show the value of a variable after source parsing and exit\0A -t TEMPLATE template file\0A -o OUTPUT output file\00"
define void @blogc_print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([729 x i8], [729 x i8]* @str, i64 0, i64 0))
ret void
}