Files
MY_COMPILER/midend/llvm/use/IrUser.java
邓智航 a9b8e82fd5 some opt
2025-12-25 15:07:20 +08:00

76 lines
1.6 KiB
Java
Executable File

package midend.llvm.use;
import java.util.ArrayList;
import midend.llvm.value.IrValue;
import midend.llvm.type.IrType;
public class IrUser extends IrValue {
private ArrayList<IrValue> uses;
public IrUser(IrType type, String name) {
super(type, name);
this.uses = new ArrayList<>();
}
public ArrayList<IrValue> getUses() {
return uses;
}
public void addUse(IrValue value) {
uses.add(value);
if (value != null) {
value.addUser(this);
}
}
public IrValue getUse(int index) {
if (index >= uses.size()) {
return null;
}
return uses.get(index);
}
public void setUse(int index, IrValue value) {
if (index >= uses.size() || index < 0) {
return;
}
IrValue oldValue = uses.get(index);
if (oldValue != null) {
oldValue.deleteUser(this);
}
uses.set(index, value);
if (value != null) {
value.addUser(this);
}
}
public void deleteUse(IrValue value) {
uses.remove(value);
if (value != null) {
value.deleteUser(this);
}
}
public void clearUses() {
for (IrValue value : uses) {
if (value != null) {
value.deleteUser(this);
}
}
uses.clear();
}
public void deleteUse(int index) {
if (index >= uses.size() || index < 0) {
return;
}
IrValue value = uses.get(index);
deleteUse(value);
}
public int getNumUses() {
return uses.size();
}
}