tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] nocode_wanted does not work


From: Sergey Korshunoff
Subject: Re: [Tinycc-devel] nocode_wanted does not work
Date: Mon, 4 Apr 2016 23:00:47 +0300

Looks like the following patch solves the problem with for/while
inside {()}. But I don't found solution for  ({ return;}) when
nocode_wanted. An tgz with patch and tests is attached.

diff --git a/tccgen.c b/tccgen.c
index 7be2f2f..c1d5cae 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -3848,7 +3848,8 @@ ST_FUNC void unary(void)
             if (const_wanted)
                 tcc_error("expected constant");
             /* save all registers */
-            save_regs(0);.
+            if (!nocode_wanted)
+                save_regs(0);
             /* statement expression : we do not accept break/continue
                inside as GCC does */
             block(NULL, NULL, NULL, NULL, 0, 1);
@@ -4878,7 +4879,8 @@ static void block(int *bsym, int *csym, int
*case_sym, int *def_sym,
         a = gvtst(1, 0);
         b = 0;
         block(&a, &b, case_sym, def_sym, case_reg, 0);
-        gjmp_addr(d);
+        if(!nocode_wanted)
+            gjmp_addr(d);
         gsym(a);
         gsym_addr(b, d);
     } else if (tok == '{') {
@@ -5070,7 +5072,8 @@ static void block(int *bsym, int *csym, int
*case_sym, int *def_sym,
         }
         skip(')');
         block(&a, &b, case_sym, def_sym, case_reg, 0);
-        gjmp_addr(c);
+        if(!nocode_wanted)
+            gjmp_addr(c);
         gsym(a);
         gsym_addr(b, c);
         scope_stack_bottom = scope_stack_bottom->next;

Attachment: vla_label_fix_problem.tgz
Description: GNU Zip compressed data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]