diff --git a/source/Plugins/ABI/ARC/ABISysV_arc.cpp b/source/Plugins/ABI/ARC/ABISysV_arc.cpp
index be85867..60cdbc53 100644
--- a/source/Plugins/ABI/ARC/ABISysV_arc.cpp
+++ b/source/Plugins/ABI/ARC/ABISysV_arc.cpp
@@ -466,7 +466,7 @@
     if (!SetSizedInteger(value.GetScalar(), raw_value, byte_size, is_signed))
       return ValueObjectSP();
 
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
   }
   // Pointer return type.
   else if (type_flags & eTypeIsPointer) {
@@ -474,7 +474,7 @@
                                                 LLDB_REGNUM_GENERIC_ARG1);
     value.GetScalar() = reg_ctx->ReadRegisterAsUnsigned(reg_info_r0, 0);
 
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
   }
   // Floating point return type.
   else if (type_flags & eTypeIsFloat) {
@@ -537,7 +537,7 @@
     auto reg_info_r0 = reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
                                                 LLDB_REGNUM_GENERIC_ARG1);
     value.GetScalar() = reg_ctx->ReadRegisterAsUnsigned(reg_info_r0, 0);
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
   }
   // Floating point return type.
   else if (retType.isFloatingPointTy()) {
diff --git a/source/Plugins/ABI/Mips/ABISysV_mips64.cpp b/source/Plugins/ABI/Mips/ABISysV_mips64.cpp
index 7515557..5e72af0 100644
--- a/source/Plugins/ABI/Mips/ABISysV_mips64.cpp
+++ b/source/Plugins/ABI/Mips/ABISysV_mips64.cpp
@@ -764,7 +764,7 @@
   const RegisterInfo *r3_info = reg_ctx->GetRegisterInfoByName("r3", 0);
 
   if (type_flags & eTypeIsScalar || type_flags & eTypeIsPointer) {
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
 
     bool success = false;
     if (type_flags & eTypeIsInteger || type_flags & eTypeIsPointer) {
diff --git a/source/Plugins/ABI/PowerPC/ABISysV_ppc.cpp b/source/Plugins/ABI/PowerPC/ABISysV_ppc.cpp
index 91d2e59..d560564 100644
--- a/source/Plugins/ABI/PowerPC/ABISysV_ppc.cpp
+++ b/source/Plugins/ABI/PowerPC/ABISysV_ppc.cpp
@@ -520,7 +520,7 @@
 
   const uint32_t type_flags = return_compiler_type.GetTypeInfo();
   if (type_flags & eTypeIsScalar) {
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
 
     bool success = false;
     if (type_flags & eTypeIsInteger) {
@@ -603,7 +603,7 @@
         reg_ctx->GetRegisterInfoByName("r3", 0)->kinds[eRegisterKindLLDB];
     value.GetScalar() =
         (uint64_t)thread.GetRegisterContext()->ReadRegisterAsUnsigned(r3_id, 0);
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
     return_valobj_sp = ValueObjectConstResult::Create(
         thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
   } else if (type_flags & eTypeIsVector) {
diff --git a/source/Plugins/ABI/PowerPC/ABISysV_ppc64.cpp b/source/Plugins/ABI/PowerPC/ABISysV_ppc64.cpp
index c7cb773..6031431 100644
--- a/source/Plugins/ABI/PowerPC/ABISysV_ppc64.cpp
+++ b/source/Plugins/ABI/PowerPC/ABISysV_ppc64.cpp
@@ -577,7 +577,7 @@
   ValueSP NewScalarValue(CompilerType &type) {
     ValueSP value_sp(new Value);
     value_sp->SetCompilerType(type);
-    value_sp->SetValueType(Value::eValueTypeScalar);
+    value_sp->SetValueType(Value::ValueType::Scalar);
     return value_sp;
   }
 
diff --git a/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp b/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp
index 22a6417..88e8511 100644
--- a/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp
+++ b/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp
@@ -487,7 +487,7 @@
 
   const uint32_t type_flags = return_compiler_type.GetTypeInfo();
   if (type_flags & eTypeIsScalar) {
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
 
     bool success = false;
     if (type_flags & eTypeIsInteger) {
@@ -571,7 +571,7 @@
         reg_ctx->GetRegisterInfoByName("r2", 0)->kinds[eRegisterKindLLDB];
     value.GetScalar() =
         (uint64_t)thread.GetRegisterContext()->ReadRegisterAsUnsigned(r2_id, 0);
-    value.SetValueType(Value::eValueTypeScalar);
+    value.SetValueType(Value::ValueType::Scalar);
     return_valobj_sp = ValueObjectConstResult::Create(
         thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
   }
