#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*/ exit(int);
int /*<<< orphan*/ printf(char *);
void print_CLI_error(void) {
  printf("Error reading in inputs from command line!\n");
  printf("Command line options:\n");
  printf(
      "-s <solver>    This argument specifies which solver you would like to "
      "use.\n"
      "               Options for solver are: \"FTCS\", \"CN\", or \"ADI\".\n\n"
      "-b <BC choice> This argument specifies which type of boundary "
      "conditions\n"
      "               you would like to use. There are two options for BCs,\n"
      "               which are: \"dirichilet\" or \"periodic\".\n\n"
      "-g             This argument specifies that you would like to have the\n"
      "               code automatically generate graphs of the initial "
      "domain\n"
      "               and the final domain after all timesteps have been run.\n"
      "               This feature requires gnuplot.\n");
  exit(1);
}


x86 assembly (clang, -O0):
<print_CLI_error>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0xef5(%rip),%rdi
call   1030 <printf@plt>
lea    0xf00(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<print_CLI_error>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
lea    0xef7(%rip),%rdi
call   1030 <puts@plt>
lea    0xf01(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [44 x i8] c"Error reading in inputs from command line!\0A\00"
@.str.1 = [23 x i8] c"Command line options:\0A\00"
@.str.2 = [597 x i8] c"-s <solver> This argument specifies which solver you would like to use.\0A Options for solver are: \22FTCS\22, \22CN\22, or \22ADI\22.\0A\0A-b <BC choice> This argument specifies which type of boundary conditions\0A you would like to use. There are two options for BCs,\0A which are: \22dirichilet\22 or \22periodic\22.\0A\0A-g This argument specifies that you would like to have the\0A code automatically generate graphs of the initial domain\0A and the final domain after all timesteps have been run.\0A This feature requires gnuplot.\0A\00"
define void @print_CLI_error() {
%1 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([597 x i8], [597 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [43 x i8] c"Error reading in inputs from command line!\00"
@str.3 = [22 x i8] c"Command line options:\00"
@str.4 = [596 x i8] c"-s <solver> This argument specifies which solver you would like to use.\0A Options for solver are: \22FTCS\22, \22CN\22, or \22ADI\22.\0A\0A-b <BC choice> This argument specifies which type of boundary conditions\0A you would like to use. There are two options for BCs,\0A which are: \22dirichilet\22 or \22periodic\22.\0A\0A-g This argument specifies that you would like to have the\0A code automatically generate graphs of the initial domain\0A and the final domain after all timesteps have been run.\0A This feature requires gnuplot.\00"
define void @print_CLI_error() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str.3, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([596 x i8], [596 x i8]* @str.4, i64 0, i64 0))
%4 = tail call i32 @exit(i32 1)
unreachable
}