llvm-project
e416b097 - [IR] Set Number of Hungoff Uses after allocation (#213304)

Commit
2 days ago
[IR] Set Number of Hungoff Uses after allocation (#213304) If allocation of the Use[] in allocHungoffUses fails (e.g. due to OOM), it may happen that the destructor of User is called with NumUserOperands > 0. Then `Use::zap` tries to destruct Uses that were not constructed in the first place. Example scenario for SwitchInst: `SwitchInst::init()` is called, which means the constructor of the parent class User went through successfully, which means the destructor of User will be called eventually. If now `SwitchInst::init()` calls first `setNumHungOffUseOperands(2)` and then `allocHungoffUses()` and the allocation there fails, `~User()` is called and tries to destruct 2 Uses, which can lead to problems. This patch consequently ensures that first the allocation happens and then NumUserOperands is set accordingly, so that this problem is prevented.
Author
Parents
Loading