diff --git a/runtime/src/kmp_settings.cpp b/runtime/src/kmp_settings.cpp
index 3f38bec..114cd9c 100644
--- a/runtime/src/kmp_settings.cpp
+++ b/runtime/src/kmp_settings.cpp
@@ -1250,11 +1250,11 @@
   if (*next == '\0')
     return;
   scan = next;
-  if (__kmp_match_str("MANDATORY", scan, &next)) {
+  if (!__kmp_strcasecmp_with_sentinel("mandatory", scan, 0)) {
     __kmp_target_offload = tgt_mandatory;
-  } else if (__kmp_match_str("DISABLED", scan, &next)) {
+  } else if (!__kmp_strcasecmp_with_sentinel("disabled", scan, 0)) {
     __kmp_target_offload = tgt_disabled;
-  } else if (__kmp_match_str("DEFAULT", scan, &next)) {
+  } else if (!__kmp_strcasecmp_with_sentinel("default", scan, 0)) {
     __kmp_target_offload = tgt_default;
   } else {
     KMP_WARNING(SyntaxErrorUsing, name, "DEFAULT");
diff --git a/runtime/test/env/omp_target_offload.c b/runtime/test/env/omp_target_offload.c
new file mode 100644
index 0000000..91ce108
--- /dev/null
+++ b/runtime/test/env/omp_target_offload.c
@@ -0,0 +1,62 @@
+// RUN: %libomp-compile-and-run
+#include <string.h>
+#include <stdlib.h>
+
+enum kmp_target_offload_kind {
+  tgt_disabled = 0,
+  tgt_default = 1,
+  tgt_mandatory = 2
+};
+
+extern int __kmpc_get_target_offload();
+
+const char *disabled_examples[] = {
+    // Allowed inputs
+    "disabled", "DISABLED", "Disabled", "dIsAbLeD", "DiSaBlEd"};
+
+const char *default_examples[] = {
+    // Allowed inputs
+    "default", "DEFAULT", "Default", "deFAulT", "DEfaULt",
+    // These should be changed to default (failed match)
+    "mandatry", "defaults", "disable", "enabled", "mandatorynot"};
+
+const char *mandatory_examples[] = {
+    // Allowed inputs
+    "mandatory", "MANDATORY", "Mandatory", "manDatoRy", "MANdATOry"};
+
+// Return target-offload-var ICV
+int get_target_offload_icv() {
+#pragma omp parallel
+  {}
+  return __kmpc_get_target_offload();
+}
+
+int main() {
+  int i;
+  const char *omp_target_offload = "OMP_TARGET_OFFLOAD=";
+  char buf[80];
+
+  for (i = 0; i < sizeof(disabled_examples) / sizeof(char *); ++i) {
+    strcpy(buf, omp_target_offload);
+    strcat(buf, disabled_examples[i]);
+    kmp_set_defaults(buf);
+    if (tgt_disabled != get_target_offload_icv())
+      return EXIT_FAILURE;
+  }
+  for (i = 0; i < sizeof(default_examples) / sizeof(char *); ++i) {
+    strcpy(buf, omp_target_offload);
+    strcat(buf, default_examples[i]);
+    kmp_set_defaults(buf);
+    if (tgt_default != get_target_offload_icv())
+      return EXIT_FAILURE;
+  }
+  for (i = 0; i < sizeof(mandatory_examples) / sizeof(char *); ++i) {
+    strcpy(buf, omp_target_offload);
+    strcat(buf, mandatory_examples[i]);
+    kmp_set_defaults(buf);
+    if (tgt_mandatory != get_target_offload_icv())
+      return EXIT_FAILURE;
+  }
+
+  return EXIT_SUCCESS;
+}
