// The second value provided to the macro specifies the type of the function
// (result value, then each argument) as follows:
// v -> void
+// b -> boolean
// c -> char
// s -> short
// i -> int
BUILTIN(__sync_lock_test_and_set,"ii*i", "n")
BUILTIN(__sync_val_compare_and_swap,"ii*ii", "n")
+// LLVM instruction builtin
+BUILTIN(__builtin_llvm_memory_barrier,"vbbbbb", "n")
+
#undef BUILTIN
else
Type = Context.CharTy;
break;
+ case 'b': // boolean
+ assert(!Long && !Signed && !Unsigned && "Bad modifiers for 'b'!");
+ Type = Context.BoolTy;
+ break;
case 'z': // size_t.
assert(!Long && !Signed && !Unsigned && "Bad modifiers for 'z'!");
Type = Context.getSizeType();