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

69 lines
1.4 KiB
Java
Executable File

package midend.llvm.value;
import java.util.ArrayList;
import midend.llvm.type.IrType;
import midend.llvm.use.IrUser;
public class IrValue {
private IrType type;
private String name;
private ArrayList<IrUser> users;
public IrValue(IrType type, String name) {
this.type = type;
this.name = name;
this.users = new ArrayList<>();
}
public IrType getType() {
return type;
}
public String getName() {
return name;
}
public ArrayList<IrUser> getUsers() {
return users;
}
public void addUser(IrUser user) {
users.add(user);
}
public void deleteUser(IrUser user) {
users.remove(user);
}
public void clearUsers() {
ArrayList<IrUser> usersCopy = new ArrayList<>(users);
for (IrUser user : usersCopy) {
user.deleteUse(this);
}
}
public void replaceUserToAnother(IrValue newValue) {
ArrayList<IrUser> usersCopy = new ArrayList<>(users);
for (IrUser user : usersCopy) {
for (int i = 0; i < user.getUses().size(); i++) {
if (user.getUse(i) == this) {
user.setUse(i, newValue);
}
}
}
}
public String toString() {
return type.toString() + " " + name;
}
public void toMips() {
// 子类实现
}
public String getMipsLabel() {
return name.substring(1);
}
}