Skip to content

LLVM ERROR: SmallVector unable to grow. #704

@KatCe

Description

@KatCe

Hello,

with the following synthesis commands and the program (myfunc) below,

set-clock-period 8
compile --sharing  --buffer-algorithm fpl22
write-hdl --hdl verilog

I get the following error:

Performance analysis available, share functional units as much as possible while maintaining the performance...
dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.373315 to fit
LLVM ERROR: SmallVector unable to grow. Requested capacity (4294967296) is larger than maximum value for size type (4294967295)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /data//workspace/dynamatic/bin/dynamatic-opt /home//turboturtle/fuzzing/run_20260112123806/run_20260112123806_design_0000/synth/../out/comp/handshake_export.mlir --lower-handshake-to-hw

The program:

// var_0,var_1,var_2_a,var_3_a,var_4_a,var_5_a

char myfunc(int var_0, unsigned char var_1, unsigned long long int var_2_a, unsigned long int var_3_a, char var_4_a, int var_5_a) {
  unsigned char arr_6_a[256] = { (unsigned char) var_2_a };
  unsigned long long int var_7 = (unsigned long long int) var_0;
  char var_8 = (char) var_1;
  unsigned char var_9 = (unsigned char) var_1;
  unsigned long int var_10 = (unsigned long int) var_1;
  char var_11 = (char) var_1;
  unsigned long int var_12_a = (unsigned long int) var_4_a;
  unsigned long int var_13 = (unsigned long int) var_1;
  unsigned long int var_14_a = (unsigned long int) var_2_a;
  unsigned long long int var_15 = (unsigned long long int) var_0;
  unsigned long int var_16_a = (unsigned long int) var_4_a;
  int var_17 = (int) var_0;
  char var_18 = (char) var_0;
  unsigned char var_19_a = (unsigned char) var_3_a;
  char var_20 = (char) var_1;
  unsigned long long int var_21_a = (unsigned long long int) var_2_a;
  unsigned long int var_22 = (unsigned long int) var_1;
  unsigned long int var_23 = (unsigned long int) var_0;
  char var_24_a = (char) var_2_a;
  char var_25 = (char) var_0;
  unsigned long int var_26_a = (unsigned long int) var_5_a;
  char var_27 = (char) var_0;
  int var_28 = (int) var_0;
  unsigned long int var_29 = (unsigned long int) var_1;
  unsigned long long int var_30_a = (unsigned long long int) var_2_a;
  unsigned long long int var_31 = (unsigned long long int) var_1;
  char var_32 = (char) var_0;
  unsigned long long int var_33 = (unsigned long long int) var_1;
  unsigned long long int var_34 = (unsigned long long int) var_0;
  unsigned char var_35_a = (unsigned char) var_5_a;
  unsigned char var_36_a = (unsigned char) var_4_a;
  char var_37 = (char) var_0;
  unsigned char var_38 = (unsigned char) var_1;
  unsigned char var_39_a = (unsigned char) var_5_a;
  int var_40 = (int) var_0;
  char var_41_a = (char) var_5_a;
  int var_42 = (int) var_1;
  char var_43_a = (char) var_2_a;
  char var_44 = (char) var_1;
  int var_45_a = (int) var_4_a;
  char var_46_a = (char) var_2_a;
  unsigned long int var_47_a = (unsigned long int) var_2_a;
  char var_48_a = (char) var_4_a;
  int var_49 = (int) var_0;
  unsigned char var_50_a = (unsigned char) var_3_a;
  unsigned long long int var_51 = (unsigned long long int) var_1;
  unsigned char var_52 = (unsigned char) var_0;
  char var_53 = (char) var_1;
  unsigned long long int var_54 = (unsigned long long int) var_1;
  unsigned long int var_55_a = (unsigned long int) var_4_a;
  unsigned char var_56 = (unsigned char) var_1;
  unsigned long long int var_57 = (unsigned long long int) var_0;
  unsigned long int var_58 = (unsigned long int) var_1;
  unsigned char var_59_a = (unsigned char) var_4_a;
  unsigned char var_60 = (unsigned char) var_0;
  unsigned char var_61 = (unsigned char) var_1;
  unsigned long int var_62 = (unsigned long int) var_1;
  int var_63 = (int) var_0;
  unsigned char var_64_a = (unsigned char) var_4_a;
  unsigned char var_65 = (unsigned char) var_0;
  unsigned char var_66 = (unsigned char) var_1;
  int var_67 = (int) var_1;
  unsigned char var_68 = (unsigned char) var_1;
  unsigned char var_69_a = (unsigned char) var_2_a;
  unsigned long long int var_70 = (unsigned long long int) var_1;
  unsigned long long int var_71 = (unsigned long long int) var_0;
  int var_72_a = (int) var_5_a;
  unsigned char var_73 = (unsigned char) var_0;
  unsigned long long int var_74 = (unsigned long long int) var_0;
  char var_75_a = (char) var_4_a;
  unsigned long long int var_76 = (unsigned long long int) var_1;
  unsigned long long int var_77 = (unsigned long long int) var_1;
  unsigned char var_78 = (unsigned char) var_1;
  unsigned long long int var_79 = (unsigned long long int) var_0;
  int var_80_a = (int) var_3_a;
  unsigned long int var_81_a = (unsigned long int) var_4_a;
  var_17 = 0;
  while (var_17 < 10)
  {
      if (var_17 < var_0)
        break;
      var_17++;
  }
  arr_6_a[((int) var_1)] = (unsigned char) (var_4_a);
  arr_6_a[((int) var_1)] = var_1 ^ arr_6_a[((int) var_1)];
  var_78 = 0;
  while (var_78 < 14)
  {
      arr_6_a[((int) var_1)] = var_1 & arr_6_a[((int) var_1)];
      if (var_78 < var_1)
        break;
      var_78++;
  }
  arr_6_a[((int) var_1)] = var_1 * arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = var_1 | arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = var_78 & arr_6_a[((int) var_1)];
  arr_6_a[((int) var_78)] = var_78 << arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = var_1 + arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = (unsigned char) (var_2_a);
  arr_6_a[((int) var_78)] = (unsigned char) (var_3_a);
  var_9 = var_1 | var_78;
  arr_6_a[((int) var_1)] = var_9 >> arr_6_a[((int) var_78)];
  arr_6_a[((int) var_1)] = var_9 & arr_6_a[((int) var_78)];
  arr_6_a[((int) var_1)] = var_9 & arr_6_a[((int) var_1)];
  var_45_a = var_17 & var_5_a;
  var_42 = var_17 & var_0;
  arr_6_a[((int) var_1)] = var_78 & arr_6_a[((int) var_1)];
  arr_6_a[((int) var_78)] = (unsigned char) (var_4_a);
  arr_6_a[((int) var_78)] = var_9 << arr_6_a[((int) var_1)];
  var_66 = var_9 * var_1;
  arr_6_a[((int) var_66)] = var_78 * arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = var_78 | arr_6_a[((int) var_1)];
  var_65 = var_1 | var_9;
  arr_6_a[((int) var_1)] = var_1 & arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = var_9 * arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = var_9 * arr_6_a[((int) var_1)];
  var_56 = var_9 ^ var_1;
  arr_6_a[((int) var_1)] = var_78 | arr_6_a[((int) var_78)];
  arr_6_a[((int) var_1)] = var_9 ^ arr_6_a[((int) var_1)];
  for_loop_2: for (var_61 = 0; var_61 < 7; var_61++)
  {
      if (var_61 < var_66)
        break;
  }
  arr_6_a[((int) var_66)] = var_78 * arr_6_a[((int) var_1)];
  arr_6_a[((int) var_78)] = var_65 << arr_6_a[((int) var_1)];
  var_72_a = var_45_a | var_5_a;
  var_36_a = var_1 + arr_6_a[((int) var_1)];
  arr_6_a[((int) var_1)] = arr_6_a[((int) var_1)] + var_36_a;
  arr_6_a[((int) var_61)] = arr_6_a[((int) var_1)] << var_36_a;
  arr_6_a[((int) var_1)] = arr_6_a[((int) var_1)] << var_36_a;
  switch (var_65)
  {
      case 12:
      ;
      var_39_a = arr_6_a[((int) var_1)] & var_36_a;
      break;
      default:
      ;
      arr_6_a[((int) var_78)] = var_65 | arr_6_a[((int) var_78)];
      arr_6_a[((int) var_9)] = arr_6_a[((int) var_1)] << var_36_a;
      arr_6_a[((int) var_1)] = arr_6_a[((int) var_66)] | var_39_a;
      arr_6_a[((int) var_9)] = arr_6_a[((int) var_1)] ^ var_39_a;
      arr_6_a[((int) var_61)] = arr_6_a[((int) var_1)] | var_39_a;
      arr_6_a[((int) var_9)] = arr_6_a[((int) var_1)] | var_36_a;
      arr_6_a[((int) var_1)] = var_78 | arr_6_a[((int) var_9)];
  }
  arr_6_a[((int) var_1)] = arr_6_a[((int) var_9)] | var_36_a;
  for_loop_3: for (var_63 = 0; var_63 < 11; var_63++)
  {
      arr_6_a[((int) var_1)] = arr_6_a[((int) var_1)] * var_36_a;
      arr_6_a[((int) var_61)] = arr_6_a[((int) var_1)] - var_36_a;
      arr_6_a[((int) var_1)] = arr_6_a[((int) var_1)] & var_36_a;
      arr_6_a[((int) var_1)] = arr_6_a[((int) var_1)] | var_39_a;
      if (var_63 < var_17)
        break;
  }
  arr_6_a[((int) var_1)] = arr_6_a[((int) var_1)] | var_36_a;
  arr_6_a[((int) var_61)] = var_9 & arr_6_a[((int) var_1)];
  arr_6_a[((int) var_78)] = arr_6_a[((int) var_66)] & var_39_a;
  arr_6_a[((int) var_78)] = var_56 * arr_6_a[((int) var_1)];
  var_69_a = arr_6_a[((int) var_61)] >> var_36_a;
  arr_6_a[((int) var_66)] = arr_6_a[((int) var_61)] >> var_36_a;
  return (char) (var_0) + (char) (var_1) + (char) (var_2_a) + (char) (var_3_a) + (char) (var_4_a) + (char) (var_5_a) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_9)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_61)]) + (char) (arr_6_a[((int) var_9)]) + (char) (arr_6_a[((int) var_9)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_38)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_66)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_61)]) + (char) (arr_6_a[((int) var_61)]) + (char) (arr_6_a[((int) var_61)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_66)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_78)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_1)]) + (char) (arr_6_a[((int) var_66)]) + (char) (arr_6_a[((int) var_1)]) + (char) (var_9) + (char) (var_17) + (char) (var_36_a) + (char) (var_39_a) + (char) (var_42) + (char) (var_45_a) + (char) (var_56) + (char) (var_61) + (char) (var_63) + (char) (var_65) + (char) (var_66) + (char) (var_69_a) + (char) (var_72_a) + (char) (var_78);
}

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  srand(time(NULL));

  for (int i = 0; i < 10; i++) {
    int var_0 = rand();
    unsigned char var_1 = rand() % 256;
    unsigned long long int var_2_a = rand();
    unsigned long int var_3_a = rand();
    char var_4_a = rand() % 256;
    int var_5_a = rand();

    char result = myfunc(var_0, var_1, var_2_a, var_3_a, var_4_a, var_5_a);
    printf("Call %d: result = %d\n", i + 1, result);
  }

  return 0;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions