dumpBitfield() remove unnecessary if branch
If an enum value is zero, (o & VALUE) == VALUE is always
true, so there is no point of adding an "if" statement.
Test: m android.hardware.biometrics.fingerprint-V2.1-java
and manually look at the code generated for
FingerprintAcquiredInfo.dumpBitfield
Bug: 63388796
Change-Id: Ic8506d74b57b70515566f7092f0a595273890dba
diff --git a/EnumType.cpp b/EnumType.cpp
index 7153696..6dfabfd 100644
--- a/EnumType.cpp
+++ b/EnumType.cpp
@@ -415,6 +415,10 @@
out << "java.util.ArrayList<String> list = new java.util.ArrayList<>();\n";
out << bitfieldType << " flipped = 0;\n";
for (EnumValue *value : values()) {
+ if (value->constExpr()->castSizeT() == 0) {
+ out << "list.add(\"" << value->name() << "\"); // " << value->name() << " == 0\n";
+ continue;
+ }
out.sIf("(o & " + value->name() + ") == " + value->name(), [&] {
out << "list.add(\"" << value->name() << "\");\n";
out << "flipped |= " << value->name() << ";\n";