1 package jdk.incubator.code.internal;
2
3 import jdk.incubator.code.Block;
4 import jdk.incubator.code.CodeTransformer;
5 import jdk.incubator.code.Op;
6 import jdk.incubator.code.dialect.core.CoreOp;
7
8 /**
9 * A transformer that removes unused {@link jdk.incubator.code.dialect.core.CoreOp.ConstantOp}.
10 */
11 public class RemoveUnusedConstantTransformer implements CodeTransformer {
12 private RemoveUnusedConstantTransformer() {}
13
14 public static final RemoveUnusedConstantTransformer INSTANCE = new RemoveUnusedConstantTransformer();
15
16 @Override
17 public Block.Builder acceptOp(Block.Builder builder, Op op) {
18 if (op instanceof CoreOp.ConstantOp && op.result() != null && op.result().uses().isEmpty()) {
19 return builder;
20 }
21 builder.op(op);
22 return builder;
23 }
24 }