aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorseyko <seyko2@gmail.com>2015-04-21 06:34:35 +0300
committerseyko <seyko2@gmail.com>2015-04-21 06:34:35 +0300
commit0c8447db7970813292a8be74ee50e49091be5d15 (patch)
treef1db257725c3ac9ddec1632473835a0e44d2d240 /tests
parent5e8fb713c49cfad17d5fb78fb353d88b1ab86eb8 (diff)
downloadtinycc-0c8447db7970813292a8be74ee50e49091be5d15.tar.gz
tinycc-0c8447db7970813292a8be74ee50e49091be5d15.tar.bz2
* and #pragma pop_macro("macro_name")
* give warning if pragma is unknown for tcc * don't free asm_label in sym_free(), it's a job of the asm_free_labels(). The above pragmas are used in the mingw headers. Thise pragmas are implemented in gcc-4.5+ and current clang.
Diffstat (limited to 'tests')
-rw-r--r--tests/tests2/77_push_pop_macro.c23
-rw-r--r--tests/tests2/77_push_pop_macro.expect5
-rw-r--r--tests/tests2/Makefile3
3 files changed, 30 insertions, 1 deletions
diff --git a/tests/tests2/77_push_pop_macro.c b/tests/tests2/77_push_pop_macro.c
new file mode 100644
index 0000000..1f0b1bc
--- /dev/null
+++ b/tests/tests2/77_push_pop_macro.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+int main()
+{
+ #define abort "111"
+ printf("abort = %s\n", abort);
+
+ #pragma push_macro("abort")
+ #undef abort
+ #define abort "222"
+ printf("abort = %s\n", abort);
+
+ #pragma push_macro("abort")
+ #undef abort
+ #define abort "333"
+ printf("abort = %s\n", abort);
+
+ #pragma pop_macro("abort")
+ printf("abort = %s\n", abort);
+
+ #pragma pop_macro("abort")
+ printf("abort = %s\n", abort);
+}
diff --git a/tests/tests2/77_push_pop_macro.expect b/tests/tests2/77_push_pop_macro.expect
new file mode 100644
index 0000000..d8a5530
--- /dev/null
+++ b/tests/tests2/77_push_pop_macro.expect
@@ -0,0 +1,5 @@
+abort = 111
+abort = 222
+abort = 333
+abort = 222
+abort = 111
diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile
index a5a18fb..87daf7b 100644
--- a/tests/tests2/Makefile
+++ b/tests/tests2/Makefile
@@ -95,7 +95,8 @@ TESTS = \
73_arm64.test \
74_nocode_wanted.test \
75_array_in_struct_init.test \
- 76_dollars_in_identifiers.test
+ 76_dollars_in_identifiers.test \
+ 77_push_pop_macro.test
# 34_array_assignment.test -- array assignment is not in C standard