+ break;
+
+ case P_EXCLUDE:
+ parseWithComma(options.excludeRegs, Safe_strdup(cp));
+ break;
+
+ case P_NOIV:
+ options.noiv = 1;
+ break;
+
+ case P_LOOPREV:
+ optimize.noLoopReverse = 1;
+ break;
+
+ case P_OVERLAY_:
+ break; /* notyet */
+ }
+}
+
+int process_pragma(char *s)
+{
+#define NELEM(x) (sizeof (x) / sizeof (x)[0])
+#define PRAGMA "#pragma"
+
+ static struct pragma_s {
+ const char *name;
+ enum pragma_id id;
+ } pragma_tbl[] = {
+ { "SAVE", P_SAVE },
+ { "RESTORE", P_RESTORE },
+ { "NOINDUCTION", P_NOINDUCTION },
+ { "NOINVARIANT", P_NOINVARIANT },
+ { "NOLOOPREVERSE", P_LOOPREV },
+ { "INDUCTION", P_INDUCTION },
+ { "STACKAUTO", P_STACKAUTO },
+ { "NOJTBOUND", P_NOJTBOUND },
+ { "NOGCSE", P_NOGCSE },
+ { "NOOVERLAY", P_NOOVERLAY },
+ { "CALLEE-SAVES", P_CALLEE_SAVES },
+ { "EXCLUDE", P_EXCLUDE },
+ { "NOIV", P_NOIV },
+ { "OVERLAY", P_OVERLAY_ },
+ { "LESS_PEDANTIC", P_LESSPEDANTIC },
+ };
+ char *cp ;
+ int i;
+
+ /* find the pragma */
+ while (strncmp(s, PRAGMA, (sizeof PRAGMA) - 1))
+ s++;
+ s += (sizeof PRAGMA) - 1;