SelectionDAG::LegalizeTypes is very slow in 3.1 version

In 3.1, the backend is very slow to legalize types.

Following is the code snippet which may be the culprit:

%Result.i.i.i97 = alloca i33, align 8
%Result.i.i.i96= alloca i33, align 8
%Result.i.i.i95 = alloca i33, align 8
%Result.i.i.i94 = alloca i33, align 8
%Result.i.i.i93 = alloca i33, align 8
%Result.i.i.i92= alloca i33, align 8
%Result.i.i.i91 = alloca i33, align 8
%Result.i.i.i90 = alloca i33, align 8
%Result.i.i.i89 = alloca i33, align 8

The compilation time improve significant if running on LLVM 3.9. Unfortunately, it’s not a choice for me now to upgrade it to 3.9.

If anyone luckily to know what’s the evolution in this area to improve the compilation time performance, pls kindly comments.

thanks

Xiaoyong

You realize 3.1 was released 4 years ago, and that there’s been more than 50,000 commits to llvm since then (not even including commits to clang and other pieces!), right?

Absolutely, James. I was with LLVM from very beginning. And keep everything up-to-date.

The background is the new product was inherited. It took time to upgrade.

To the problem: If anyone meet the similar issue, pls kindly share.

If you are certain it’s the LegalizeTypes (did you isolate it to this?), diff the versions up, I’m sure you’ll find your answer.

-Ryan