[PATCH] D104581: [RISCV] Add DAG combine to detect opportunities to replace (i64 (any_extend (i32 X)) with sign_extend.

Nathan Chancellor via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 23 19:18:29 PDT 2021


nathanchance added a comment.

This patch causes an infinite loop while compiling the RISC-V Linux kernel's `allmodconfig` target. A simplified reproducer:

  $ cat aspeed-pwm-tacho.i
  char aspeed_set_pwm_port_fan_ctrl_priv_0_0,
      aspeed_set_pwm_port_fan_ctrl_fan_ctrl;
  pwm_store_period, pwm_store_dc_time_on;
  pwm_store() {
    pwm_store_period = aspeed_set_pwm_port_fan_ctrl_priv_0_0;
    pwm_store_period += 1;
    pwm_store_dc_time_on =
        aspeed_set_pwm_port_fan_ctrl_fan_ctrl * pwm_store_period / 5;
    if (pwm_store_dc_time_on)
      aspeed_set_pwm_port_duty_rising_falling();
  }
  
  $ timeout 5s clang -O0 --target=riscv64-linux-gnu -c -o /dev/null aspeed-pwm-tacho.i; echo $?
  ...
  0
  
  $ timeout 5s clang -O1 --target=riscv64-linux-gnu -c -o /dev/null aspeed-pwm-tacho.i; echo $?
  ...
  0
  
  $ timeout 5s clang -O2 --target=riscv64-linux-gnu -c -o /dev/null aspeed-pwm-tacho.i; echo $?
  ...
  124


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104581/new/

https://reviews.llvm.org/D104581



More information about the llvm-commits mailing list