Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix indentation by running a code beautifier on the generated c file #71

Open
aminya opened this issue Apr 23, 2020 · 3 comments
Open

Comments

@aminya
Copy link

aminya commented Apr 23, 2020

The current generated c file has wrong indentations. Running a code beautifier easily solves this issue, reveals the logic of the code, and makes the code nicer overall.

Related to #6

Here is an example:

using https://codebeautify.org/c-formatter-beautifier and by replacing llvm_cbe_tmp with v
After:

/* Provide Declarations */ #include <stdarg.h>

#include <setjmp.h>

#include <limits.h>

#include <stdint.h>

#include <math.h>

#ifndef __cplusplus
typedef unsigned char bool;
#endif

#ifndef _MSC_VER
#define __forceinline __attribute__((always_inline)) inline
#endif

#if defined(__GNUC__)
#define __ATTRIBUTELIST__(x) __attribute__(x)
#else
#define __ATTRIBUTELIST__(x)
#endif

#ifdef _MSC_VER /* Can only support "linkonce" vars with GCC */
#define __attribute__(X)
#endif

#ifdef _MSC_VER
#define __MSALIGN__(X) __declspec(align(X))
#else
#define __MSALIGN__(X)
#endif

/* Global Declarations */

/* Types Declarations */

/* Function definitions */

/* Types Definitions */
struct l_array_26_uint8_t {
  uint8_t array[26];
};
struct l_array_3_uint8_t {
  uint8_t array[3];
};
struct l_array_19_uint8_t {
  uint8_t array[19];
};
struct l_array_33_uint8_t {
  uint8_t array[33];
};
struct l_array_4_uint8_t {
  uint8_t array[4];
};
struct l_array_100_uint32_t {
  uint32_t array[100];
};

/* External Global Variable Declarations */

/* Function Declarations */
uint32_t main(void) __ATTRIBUTELIST__((noinline, nothrow));
uint32_t printf(uint8_t * , ...);
uint32_t __isoc99_scanf(uint8_t * , ...);

/* Global Variable Definitions and Initialization */
static struct l_array_26_uint8_t _OC_str = {
  "Enter number of elements\n"
};
static struct l_array_3_uint8_t _OC_str_OC_1 = {
  "%d"
};
static struct l_array_19_uint8_t _OC_str_OC_2 = {
  "Enter %d integers\n"
};
static struct l_array_33_uint8_t _OC_str_OC_3 = {
  "Sorted list in ascending order:\n"
};
static struct l_array_4_uint8_t _OC_str_OC_4 = {
  "%d\n"
};

/* LLVM Intrinsic Builtin Function Bodies */
static __forceinline uint32_t llvm_add_u32(uint32_t a, uint32_t b) {
  uint32_t r = a + b;
  return r;
}
static __forceinline uint32_t llvm_sub_u32(uint32_t a, uint32_t b) {
  uint32_t r = a - b;
  return r;
}

/* Function Bodies */

uint32_t main(void) {
  uint32_t llvm_cbe_tmp__1; /* Address-exposed local */
  __MSALIGN__(16) struct l_array_100_uint32_t llvm_cbe_tmp__2 __attribute__((aligned(16))); /* Address-exposed local */
  uint32_t llvm_cbe_tmp__3; /* Address-exposed local */
  uint32_t llvm_cbe_tmp__4; /* Address-exposed local */
  uint32_t llvm_cbe_tmp__5; /* Address-exposed local */
  uint32_t llvm_cbe_tmp__6; /* Address-exposed local */
  uint32_t llvm_cbe_tmp__7; /* Address-exposed local */
  uint32_t llvm_cbe_tmp__8;
  uint32_t llvm_cbe_tmp__9;
  uint32_t llvm_cbe_tmp__10;
  uint32_t llvm_cbe_tmp__11;
  uint32_t llvm_cbe_tmp__12;
  uint32_t llvm_cbe_tmp__13;
  uint32_t llvm_cbe_tmp__14;
  uint32_t llvm_cbe_tmp__15;
  uint32_t llvm_cbe_tmp__16;
  uint32_t llvm_cbe_tmp__17;
  uint32_t llvm_cbe_tmp__18;
  uint32_t llvm_cbe_tmp__19;
  uint32_t llvm_cbe_tmp__20;
  uint32_t llvm_cbe_tmp__21;
  uint32_t llvm_cbe_tmp__22;
  uint32_t llvm_cbe_tmp__23;
  uint32_t llvm_cbe_tmp__24;
  uint32_t llvm_cbe_tmp__25;
  uint32_t llvm_cbe_tmp__26;
  uint32_t llvm_cbe_tmp__27;
  uint32_t llvm_cbe_tmp__28;
  uint32_t llvm_cbe_tmp__29;
  uint32_t llvm_cbe_tmp__30;
  uint32_t llvm_cbe_tmp__31;
  uint32_t llvm_cbe_tmp__32;
  uint32_t llvm_cbe_tmp__33;
  uint32_t llvm_cbe_tmp__34;
  uint32_t llvm_cbe_tmp__35;
  uint32_t llvm_cbe_tmp__36;
  uint32_t llvm_cbe_tmp__37;
  uint32_t llvm_cbe_tmp__38;
  uint32_t llvm_cbe_tmp__39;
  uint32_t llvm_cbe_tmp__40;
  uint32_t llvm_cbe_tmp__41;
  uint32_t llvm_cbe_tmp__42;
  uint32_t llvm_cbe_tmp__43;
  uint32_t llvm_cbe_tmp__44;
  uint32_t llvm_cbe_tmp__45;

  llvm_cbe_tmp__1 = 0;
  #line 4 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c";;;;;;
  #line 6 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__8 = printf((( & _OC_str.array[((int64_t) UINT64_C(0))])));
  #line 7 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__9 = __isoc99_scanf((( & _OC_str_OC_1.array[((int64_t) UINT64_C(0))])), ( & llvm_cbe_tmp__3));
  #line 9 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__10 = llvm_cbe_tmp__3;
  llvm_cbe_tmp__11 = printf((( & _OC_str_OC_2.array[((int64_t) UINT64_C(0))])), llvm_cbe_tmp__10);
  #line 11 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__4 = 0;
  goto llvm_cbe_tmp__46;

  do {
    /* Syntactic loop '' to make GCC happy */
    llvm_cbe_tmp__46: llvm_cbe_tmp__12 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__13 = llvm_cbe_tmp__3;
    if ((((((int32_t) llvm_cbe_tmp__12) < ((int32_t) llvm_cbe_tmp__13)) & 1))) {
      goto llvm_cbe_tmp__47;
    } else {
      goto llvm_cbe_tmp__48;
    }

    llvm_cbe_tmp__47: #line 12 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__14 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__15 = __isoc99_scanf((( & _OC_str_OC_1.array[((int64_t) UINT64_C(0))])), (( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__14)))])));
    goto llvm_cbe_tmp__49;

    llvm_cbe_tmp__49: #line 11 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__16 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__4 = (llvm_add_u32(llvm_cbe_tmp__16, 1));
    goto llvm_cbe_tmp__46;

  } while (1); /* end of syntactic loop '' */
  llvm_cbe_tmp__48:
    #line 14 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__4 = 0;
  goto llvm_cbe_tmp__50;

  do {
    /* Syntactic loop '' to make GCC happy */
    llvm_cbe_tmp__50: llvm_cbe_tmp__17 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__18 = llvm_cbe_tmp__3;
    if ((((((int32_t) llvm_cbe_tmp__17) < ((int32_t)(llvm_sub_u32(llvm_cbe_tmp__18, 1)))) & 1))) {
      goto llvm_cbe_tmp__51;
    } else {
      goto llvm_cbe_tmp__52;
    }

    llvm_cbe_tmp__51: #line 15 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__19 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__6 = llvm_cbe_tmp__19;
    #line 17 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__20 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__5 = (llvm_add_u32(llvm_cbe_tmp__20, 1));
    goto llvm_cbe_tmp__53;

    do {
      /* Syntactic loop '' to make GCC happy */
      llvm_cbe_tmp__53: llvm_cbe_tmp__21 = llvm_cbe_tmp__5;
      llvm_cbe_tmp__22 = llvm_cbe_tmp__3;
      if ((((((int32_t) llvm_cbe_tmp__21) < ((int32_t) llvm_cbe_tmp__22)) & 1))) {
        goto llvm_cbe_tmp__54;
      } else {
        goto llvm_cbe_tmp__55;
      }

      llvm_cbe_tmp__54: #line 18 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
      llvm_cbe_tmp__23 = llvm_cbe_tmp__6;
      llvm_cbe_tmp__24 = * (( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__23)))]));
      llvm_cbe_tmp__25 = llvm_cbe_tmp__5;
      llvm_cbe_tmp__26 = * (( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__25)))]));
      if ((((((int32_t) llvm_cbe_tmp__24) > ((int32_t) llvm_cbe_tmp__26)) & 1))) {
        goto llvm_cbe_tmp__56;
      } else {
        goto llvm_cbe_tmp__57;
      }

      llvm_cbe_tmp__56: #line 19 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
      llvm_cbe_tmp__27 = llvm_cbe_tmp__5;
      llvm_cbe_tmp__6 = llvm_cbe_tmp__27;
      goto llvm_cbe_tmp__57;

      llvm_cbe_tmp__57: goto llvm_cbe_tmp__58;

      llvm_cbe_tmp__58: #line 17 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
      llvm_cbe_tmp__28 = llvm_cbe_tmp__5;
      llvm_cbe_tmp__5 = (llvm_add_u32(llvm_cbe_tmp__28, 1));
      goto llvm_cbe_tmp__53;

    } while (1); /* end of syntactic loop '' */
    llvm_cbe_tmp__55: #line 21 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__29 = llvm_cbe_tmp__6;
    llvm_cbe_tmp__30 = llvm_cbe_tmp__4;
    if ((((llvm_cbe_tmp__29 != llvm_cbe_tmp__30) & 1))) {
      goto llvm_cbe_tmp__59;
    } else {
      goto llvm_cbe_tmp__60;
    }

    llvm_cbe_tmp__59: #line 22 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__31 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__32 = * (( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__31)))]));
    llvm_cbe_tmp__7 = llvm_cbe_tmp__32;
    #line 23 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__33 = llvm_cbe_tmp__6;
    llvm_cbe_tmp__34 = * (( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__33)))]));
    llvm_cbe_tmp__35 = llvm_cbe_tmp__4;
    *(( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__35)))])) = llvm_cbe_tmp__34;
    #line 24 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__36 = llvm_cbe_tmp__7;
    llvm_cbe_tmp__37 = llvm_cbe_tmp__6;
    *(( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__37)))])) = llvm_cbe_tmp__36;
    goto llvm_cbe_tmp__60;

    llvm_cbe_tmp__60: goto llvm_cbe_tmp__61;

    llvm_cbe_tmp__61: #line 14 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__38 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__4 = (llvm_add_u32(llvm_cbe_tmp__38, 1));
    goto llvm_cbe_tmp__50;

  } while (1); /* end of syntactic loop '' */
  llvm_cbe_tmp__52:
    #line 28 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__39 = printf((( & _OC_str_OC_3.array[((int64_t) UINT64_C(0))])));
  #line 30 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__4 = 0;
  goto llvm_cbe_tmp__62;

  do {
    /* Syntactic loop '' to make GCC happy */
    llvm_cbe_tmp__62: llvm_cbe_tmp__40 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__41 = llvm_cbe_tmp__3;
    if ((((((int32_t) llvm_cbe_tmp__40) < ((int32_t) llvm_cbe_tmp__41)) & 1))) {
      goto llvm_cbe_tmp__63;
    } else {
      goto llvm_cbe_tmp__64;
    }

    llvm_cbe_tmp__63: #line 31 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__42 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__43 = * (( & llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t) llvm_cbe_tmp__42)))]));
    llvm_cbe_tmp__44 = printf((( & _OC_str_OC_4.array[((int64_t) UINT64_C(0))])), llvm_cbe_tmp__43);
    goto llvm_cbe_tmp__65;

    llvm_cbe_tmp__65: #line 30 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
    llvm_cbe_tmp__45 = llvm_cbe_tmp__4;
    llvm_cbe_tmp__4 = (llvm_add_u32(llvm_cbe_tmp__45, 1));
    goto llvm_cbe_tmp__62;

  } while (1); /* end of syntactic loop '' */
  llvm_cbe_tmp__64:
    return 0;
}

Before:

/* Provide Declarations */
#include <stdarg.h>
#include <setjmp.h>
#include <limits.h>
#include <stdint.h>
#include <math.h>
#ifndef __cplusplus
typedef unsigned char bool;
#endif

#ifndef _MSC_VER
#define __forceinline __attribute__((always_inline)) inline
#endif

#if defined(__GNUC__)
#define  __ATTRIBUTELIST__(x) __attribute__(x)
#else
#define  __ATTRIBUTELIST__(x)  
#endif

#ifdef _MSC_VER  /* Can only support "linkonce" vars with GCC */
#define __attribute__(X)
#endif

#ifdef _MSC_VER
#define __MSALIGN__(X) __declspec(align(X))
#else
#define __MSALIGN__(X)
#endif



/* Global Declarations */

/* Types Declarations */

/* Function definitions */

/* Types Definitions */
struct l_array_26_uint8_t {
  uint8_t array[26];
};
struct l_array_3_uint8_t {
  uint8_t array[3];
};
struct l_array_19_uint8_t {
  uint8_t array[19];
};
struct l_array_33_uint8_t {
  uint8_t array[33];
};
struct l_array_4_uint8_t {
  uint8_t array[4];
};
struct l_array_100_uint32_t {
  uint32_t array[100];
};

/* External Global Variable Declarations */

/* Function Declarations */
uint32_t main(void) __ATTRIBUTELIST__((noinline, nothrow));
uint32_t printf(uint8_t*, ...);
uint32_t __isoc99_scanf(uint8_t*, ...);


/* Global Variable Definitions and Initialization */
static struct l_array_26_uint8_t _OC_str = { "Enter number of elements\n" };
static struct l_array_3_uint8_t _OC_str_OC_1 = { "%d" };
static struct l_array_19_uint8_t _OC_str_OC_2 = { "Enter %d integers\n" };
static struct l_array_33_uint8_t _OC_str_OC_3 = { "Sorted list in ascending order:\n" };
static struct l_array_4_uint8_t _OC_str_OC_4 = { "%d\n" };


/* LLVM Intrinsic Builtin Function Bodies */
static __forceinline uint32_t llvm_add_u32(uint32_t a, uint32_t b) {
  uint32_t r = a + b;
  return r;
}
static __forceinline uint32_t llvm_sub_u32(uint32_t a, uint32_t b) {
  uint32_t r = a - b;
  return r;
}


/* Function Bodies */

uint32_t main(void) {
  uint32_t llvm_cbe_tmp__1;    /* Address-exposed local */
  __MSALIGN__(16) struct l_array_100_uint32_t llvm_cbe_tmp__2 __attribute__((aligned(16)));    /* Address-exposed local */
  uint32_t llvm_cbe_tmp__3;    /* Address-exposed local */
  uint32_t llvm_cbe_tmp__4;    /* Address-exposed local */
  uint32_t llvm_cbe_tmp__5;    /* Address-exposed local */
  uint32_t llvm_cbe_tmp__6;    /* Address-exposed local */
  uint32_t llvm_cbe_tmp__7;    /* Address-exposed local */
  uint32_t llvm_cbe_tmp__8;
  uint32_t llvm_cbe_tmp__9;
  uint32_t llvm_cbe_tmp__10;
  uint32_t llvm_cbe_tmp__11;
  uint32_t llvm_cbe_tmp__12;
  uint32_t llvm_cbe_tmp__13;
  uint32_t llvm_cbe_tmp__14;
  uint32_t llvm_cbe_tmp__15;
  uint32_t llvm_cbe_tmp__16;
  uint32_t llvm_cbe_tmp__17;
  uint32_t llvm_cbe_tmp__18;
  uint32_t llvm_cbe_tmp__19;
  uint32_t llvm_cbe_tmp__20;
  uint32_t llvm_cbe_tmp__21;
  uint32_t llvm_cbe_tmp__22;
  uint32_t llvm_cbe_tmp__23;
  uint32_t llvm_cbe_tmp__24;
  uint32_t llvm_cbe_tmp__25;
  uint32_t llvm_cbe_tmp__26;
  uint32_t llvm_cbe_tmp__27;
  uint32_t llvm_cbe_tmp__28;
  uint32_t llvm_cbe_tmp__29;
  uint32_t llvm_cbe_tmp__30;
  uint32_t llvm_cbe_tmp__31;
  uint32_t llvm_cbe_tmp__32;
  uint32_t llvm_cbe_tmp__33;
  uint32_t llvm_cbe_tmp__34;
  uint32_t llvm_cbe_tmp__35;
  uint32_t llvm_cbe_tmp__36;
  uint32_t llvm_cbe_tmp__37;
  uint32_t llvm_cbe_tmp__38;
  uint32_t llvm_cbe_tmp__39;
  uint32_t llvm_cbe_tmp__40;
  uint32_t llvm_cbe_tmp__41;
  uint32_t llvm_cbe_tmp__42;
  uint32_t llvm_cbe_tmp__43;
  uint32_t llvm_cbe_tmp__44;
  uint32_t llvm_cbe_tmp__45;

  llvm_cbe_tmp__1 = 0;
#line 4 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  ;
  ;
  ;
  ;
  ;
  ;
#line 6 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__8 = printf(((&_OC_str.array[((int64_t)UINT64_C(0))])));
#line 7 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__9 = __isoc99_scanf(((&_OC_str_OC_1.array[((int64_t)UINT64_C(0))])), (&llvm_cbe_tmp__3));
#line 9 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__10 = llvm_cbe_tmp__3;
  llvm_cbe_tmp__11 = printf(((&_OC_str_OC_2.array[((int64_t)UINT64_C(0))])), llvm_cbe_tmp__10);
#line 11 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__4 = 0;
  goto llvm_cbe_tmp__46;

  do {     /* Syntactic loop '' to make GCC happy */
llvm_cbe_tmp__46:
  llvm_cbe_tmp__12 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__13 = llvm_cbe_tmp__3;
  if ((((((int32_t)llvm_cbe_tmp__12) < ((int32_t)llvm_cbe_tmp__13))&1))) {
    goto llvm_cbe_tmp__47;
  } else {
    goto llvm_cbe_tmp__48;
  }

llvm_cbe_tmp__47:
#line 12 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__14 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__15 = __isoc99_scanf(((&_OC_str_OC_1.array[((int64_t)UINT64_C(0))])), ((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__14)))])));
  goto llvm_cbe_tmp__49;

llvm_cbe_tmp__49:
#line 11 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__16 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__4 = (llvm_add_u32(llvm_cbe_tmp__16, 1));
  goto llvm_cbe_tmp__46;

  } while (1); /* end of syntactic loop '' */
llvm_cbe_tmp__48:
#line 14 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__4 = 0;
  goto llvm_cbe_tmp__50;

  do {     /* Syntactic loop '' to make GCC happy */
llvm_cbe_tmp__50:
  llvm_cbe_tmp__17 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__18 = llvm_cbe_tmp__3;
  if ((((((int32_t)llvm_cbe_tmp__17) < ((int32_t)(llvm_sub_u32(llvm_cbe_tmp__18, 1))))&1))) {
    goto llvm_cbe_tmp__51;
  } else {
    goto llvm_cbe_tmp__52;
  }

llvm_cbe_tmp__51:
#line 15 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__19 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__6 = llvm_cbe_tmp__19;
#line 17 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__20 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__5 = (llvm_add_u32(llvm_cbe_tmp__20, 1));
  goto llvm_cbe_tmp__53;

  do {     /* Syntactic loop '' to make GCC happy */
llvm_cbe_tmp__53:
  llvm_cbe_tmp__21 = llvm_cbe_tmp__5;
  llvm_cbe_tmp__22 = llvm_cbe_tmp__3;
  if ((((((int32_t)llvm_cbe_tmp__21) < ((int32_t)llvm_cbe_tmp__22))&1))) {
    goto llvm_cbe_tmp__54;
  } else {
    goto llvm_cbe_tmp__55;
  }

llvm_cbe_tmp__54:
#line 18 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__23 = llvm_cbe_tmp__6;
  llvm_cbe_tmp__24 = *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__23)))]));
  llvm_cbe_tmp__25 = llvm_cbe_tmp__5;
  llvm_cbe_tmp__26 = *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__25)))]));
  if ((((((int32_t)llvm_cbe_tmp__24) > ((int32_t)llvm_cbe_tmp__26))&1))) {
    goto llvm_cbe_tmp__56;
  } else {
    goto llvm_cbe_tmp__57;
  }

llvm_cbe_tmp__56:
#line 19 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__27 = llvm_cbe_tmp__5;
  llvm_cbe_tmp__6 = llvm_cbe_tmp__27;
  goto llvm_cbe_tmp__57;

llvm_cbe_tmp__57:
  goto llvm_cbe_tmp__58;

llvm_cbe_tmp__58:
#line 17 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__28 = llvm_cbe_tmp__5;
  llvm_cbe_tmp__5 = (llvm_add_u32(llvm_cbe_tmp__28, 1));
  goto llvm_cbe_tmp__53;

  } while (1); /* end of syntactic loop '' */
llvm_cbe_tmp__55:
#line 21 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__29 = llvm_cbe_tmp__6;
  llvm_cbe_tmp__30 = llvm_cbe_tmp__4;
  if ((((llvm_cbe_tmp__29 != llvm_cbe_tmp__30)&1))) {
    goto llvm_cbe_tmp__59;
  } else {
    goto llvm_cbe_tmp__60;
  }

llvm_cbe_tmp__59:
#line 22 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__31 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__32 = *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__31)))]));
  llvm_cbe_tmp__7 = llvm_cbe_tmp__32;
#line 23 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__33 = llvm_cbe_tmp__6;
  llvm_cbe_tmp__34 = *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__33)))]));
  llvm_cbe_tmp__35 = llvm_cbe_tmp__4;
  *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__35)))])) = llvm_cbe_tmp__34;
#line 24 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__36 = llvm_cbe_tmp__7;
  llvm_cbe_tmp__37 = llvm_cbe_tmp__6;
  *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__37)))])) = llvm_cbe_tmp__36;
  goto llvm_cbe_tmp__60;

llvm_cbe_tmp__60:
  goto llvm_cbe_tmp__61;

llvm_cbe_tmp__61:
#line 14 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__38 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__4 = (llvm_add_u32(llvm_cbe_tmp__38, 1));
  goto llvm_cbe_tmp__50;

  } while (1); /* end of syntactic loop '' */
llvm_cbe_tmp__52:
#line 28 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__39 = printf(((&_OC_str_OC_3.array[((int64_t)UINT64_C(0))])));
#line 30 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__4 = 0;
  goto llvm_cbe_tmp__62;

  do {     /* Syntactic loop '' to make GCC happy */
llvm_cbe_tmp__62:
  llvm_cbe_tmp__40 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__41 = llvm_cbe_tmp__3;
  if ((((((int32_t)llvm_cbe_tmp__40) < ((int32_t)llvm_cbe_tmp__41))&1))) {
    goto llvm_cbe_tmp__63;
  } else {
    goto llvm_cbe_tmp__64;
  }

llvm_cbe_tmp__63:
#line 31 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__42 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__43 = *((&llvm_cbe_tmp__2.array[((int64_t)(((int64_t)(int32_t)llvm_cbe_tmp__42)))]));
  llvm_cbe_tmp__44 = printf(((&_OC_str_OC_4.array[((int64_t)UINT64_C(0))])), llvm_cbe_tmp__43);
  goto llvm_cbe_tmp__65;

llvm_cbe_tmp__65:
#line 30 "/home/aminya/llvm-project/llvm/projects/llvm-cbe/test/selectionsort/main.c"
  llvm_cbe_tmp__45 = llvm_cbe_tmp__4;
  llvm_cbe_tmp__4 = (llvm_add_u32(llvm_cbe_tmp__45, 1));
  goto llvm_cbe_tmp__62;

  } while (1); /* end of syntactic loop '' */
llvm_cbe_tmp__64:
  return 0;
}

@hikari-no-yume
Copy link
Collaborator

If we want prettier source code (better indentation, less unnecessary parentheses, less unnecessary casts, etc), I think the ultimate solution is to move away from directly emitting C code, and instead use an intermediate AST or IR of some kind that represents C semantics, but isn't actually C code yet. Then we can emit C in a second pass where we have full information necessary to give good indentation, only add parentheses where necessary, etc.

@aminya
Copy link
Author

aminya commented May 6, 2021

@hikari-no-yume The issue is much simpler than using another IR for C code. Directly post-processing the C code can be very useful. Other than beautifying, it can also be used with tools like cppinsights to optimize the generated code!

https://cppinsights.io/

@hikari-no-yume
Copy link
Collaborator

I don't think it's any “simpler”? The code beautifier must be at least this complex internally.

In any case, nothing stops you from running a code beautifier on the output of LLVM-CBE yourself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants