You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It looks like one of the changes to the asmwriter made it recompute the
slotmachine for every value that needs a slot number. If that is ALL values, we
spend lots of time computing SlotTable objects, only to throw them away.
The AsmWriter used to create the slot table once and use it. The fact that it
does not anymore is a major regression from LLVM 1.2.
I'm attaching a testcase (from Marek Materzok) that takes minutes to disassemble.
-Chris
The text was updated successfully, but these errors were encountered:
Turns out it wasn't all that complicated. The patch below corrects the problem.
Not sure how this slipped through the cracks but thanks go to Marek for finding
this and providing a test case.
There is an implementation for inline variables processing at CIR. The
LIT test was taken from clang's cxx1z-inline-variables.cpp where the
same functionality is tested for Clang Code generation. The test can be
run as follows
```
bin/llvm-lit -v ../clang/test/CIR/CodeGen/cxx1z-inline-variables.cpp
```
Note: the pull request also contains a formatting change for two files:
- `clang/lib/CIR/Dialect/IR/CIRDataLayout.cpp`
- `clang/lib/CIR/Dialect/Transforms/TargetLowering/Targets/X86.cpp`
Extended Description
It looks like one of the changes to the asmwriter made it recompute the
slotmachine for every value that needs a slot number. If that is ALL values, we
spend lots of time computing SlotTable objects, only to throw them away.
The AsmWriter used to create the slot table once and use it. The fact that it
does not anymore is a major regression from LLVM 1.2.
I'm attaching a testcase (from Marek Materzok) that takes minutes to disassemble.
-Chris
The text was updated successfully, but these errors were encountered: