Changeset 2797 in kBuild for trunk/src/kmk/kmk_cc_exec.c
- Timestamp:
- Sep 19, 2015 3:35:39 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmk_cc_exec.c
r2790 r2797 110 110 # define KMK_CC_STATIC_ASSERT_EX(a_Expr, a_szExpl) typedef int KMK_CC_STATIC_ASSERT_EX_TYPE[(a_Expr) ? 1 : 0] 111 111 #else 112 # define KMK_CC_STATIC_ASSERT_EX(a_Expr, a_szExpl) extern int KMK_CC_STATIC_ASSERT_EX_VAR[(a Expr) ? 1 : 0]112 # define KMK_CC_STATIC_ASSERT_EX(a_Expr, a_szExpl) extern int KMK_CC_STATIC_ASSERT_EX_VAR[(a_Expr) ? 1 : 0] 113 113 extern int KMK_CC_STATIC_ASSERT_EX_VAR[1]; 114 114 #endif … … 2027 2027 2028 2028 /* First loop: Identify potential function calls and dynamic expansion. */ 2029 KMK_CC_ASSERT(!func_char_map[ chOpen]);2030 KMK_CC_ASSERT(!func_char_map[ chClose]);2031 KMK_CC_ASSERT(!func_char_map[ '$']);2029 KMK_CC_ASSERT(!func_char_map[(unsigned char)chOpen]); 2030 KMK_CC_ASSERT(!func_char_map[(unsigned char)chClose]); 2031 KMK_CC_ASSERT(!func_char_map[(unsigned char)'$']); 2032 2032 while (cchName < cchStr) 2033 2033 { 2034 2034 ch = pchStr[cchName]; 2035 if (!func_char_map[( int)ch])2035 if (!func_char_map[(unsigned char)ch]) 2036 2036 break; 2037 2037 cchName++; … … 2092 2092 if (cArgs < cMinArgs) 2093 2093 { 2094 fatal(NULL, _("Function '% .*s' takes a minimum of %d arguments: %d given"),2094 fatal(NULL, _("Function '%s' takes a minimum of %d arguments: %d given"), 2095 2095 pszFunction, (int)cMinArgs, (int)cArgs); 2096 2096 return -1; /* not reached */ … … 2278 2278 if (pProg) 2279 2279 { 2280 int rc = 0;2281 2282 2280 pProg->pBlockTail = pBlock; 2283 2281 pProg->pFirstInstr = (PKMKCCEXPCORE)kmk_cc_block_get_next_ptr(pBlock); … … 2814 2812 2815 2813 2814 #if 0 2816 2815 /** 2817 2816 * Checks whether we've got an EOL escape sequence or not. … … 2835 2834 return (offEol - offFirstBackslash) & 1; 2836 2835 } 2836 #endif 2837 2837 2838 2838 … … 3147 3147 */ 3148 3148 #if defined(KBUILD_ARCH_X86) || defined(KBUILD_ARCH_AMD64) /* Unaligned access is reasonably cheap. */ 3149 # define KMK_CC_WORD_COMP_CONST_0(a_pchLine, a_pszWord) (1)3150 3149 # define KMK_CC_WORD_COMP_CONST_2(a_pchLine, a_pszWord) \ 3151 3150 ( *(uint16_t const *)(a_pchLine) == *(uint16_t const *)(a_pszWord) ) … … 3174 3173 && ((uint64_t const *)(a_pchLine))[1] == ((uint64_t const *)(a_pszWord))[1] ) 3175 3174 #else 3176 # define KMK_CC_WORD_COMP_CONST_0(a_pchLine, a_pszWord) (1)3177 3175 # define KMK_CC_WORD_COMP_CONST_2(a_pchLine, a_pszWord) \ 3178 3176 ( (a_pchLine)[0] == (a_pszWord)[0] \ … … 3246 3244 && (a_pchLine)[15] == (a_pszWord)[15]) 3247 3245 #endif 3246 /** See if a starting of a given length starts with a constant word. */ 3247 #define KMK_CC_WORD_COMP_IS_EOL(a_pCompiler, a_pchLine, a_cchLine) \ 3248 ( (a_cchLine) == 0 \ 3249 || KMK_CC_EVAL_IS_SPACE((a_pchLine)[0]) \ 3250 || ((a_pchLine)[0] == '\\' && (a_pchLine)[1] == (a_pCompiler)->chFirstEol) ) \ 3251 3248 3252 /** See if a starting of a given length starts with a constant word. */ 3249 3253 #define KMK_CC_WORD_COMP_CONST(a_pCompiler, a_pchLine, a_cchLine, a_pszWord, a_cchWord) \ … … 3701 3705 3702 3706 3707 #if 0 /* unused atm */ 3703 3708 /** 3704 3709 * Prepares for copying a command line. … … 3821 3826 } 3822 3827 } 3828 #endif /* unused atm */ 3823 3829 3824 3830 … … 3897 3903 unsigned const cEscEols = pCompiler->cEscEols; 3898 3904 3899 KMK_CC_ASSERT(cchLeft >= 0);3900 3905 KMK_CC_ASSERT(iEscEol <= cEscEols); 3901 3906 … … 4323 4328 // unsigned cCounts; 4324 4329 4330 4331 4325 4332 /* Skip the parenthesis. */ 4326 4333 pchWord++; … … 4468 4475 cchLeft -= 2; 4469 4476 4470 if (KMK_CC_WORD_COMP_ CONST(pCompiler, pchWord, cchLeft, "", 0))4477 if (KMK_CC_WORD_COMP_IS_EOL(pCompiler, pchWord, cchLeft)) 4471 4478 return kmk_cc_eval_do_if(pCompiler, pchWord, cchLeft, 1 /* in else */); 4472 4479 … … 4796 4803 if (ch2 == 'f') 4797 4804 { 4798 if (KMK_CC_WORD_COMP_ CONST(pCompiler, pchWord, cchLeft, "", 0))4805 if (KMK_CC_WORD_COMP_IS_EOL(pCompiler, pchWord, cchLeft)) 4799 4806 return kmk_cc_eval_do_if(pCompiler, pchWord, cchLeft, 0 /* in else */); 4800 4807 … … 4822 4829 pchWord += 5; 4823 4830 cchLeft -= 5; 4824 if (KMK_CC_WORD_COMP_ CONST(pCompiler, pchWord, cchLeft, "", 0))4831 if (KMK_CC_WORD_COMP_IS_EOL(pCompiler, pchWord, cchLeft)) 4825 4832 return kmk_cc_eval_do_include(pCompiler, pchWord, cchLeft, kKmkCcEvalInstr_include); 4826 4833 if (cchLeft >= 3 && KMK_CC_WORD_COMP_CONST_3(pchWord, "dep")) … … 4828 4835 pchWord += 3; 4829 4836 cchLeft -= 3; 4830 if (KMK_CC_WORD_COMP_ CONST(pCompiler, pchWord, cchLeft, "", 0))4837 if (KMK_CC_WORD_COMP_IS_EOL(pCompiler, pchWord, cchLeft)) 4831 4838 return kmk_cc_eval_do_include(pCompiler, pchWord, cchLeft, kKmkCcEvalInstr_includedep); 4832 4839 if (KMK_CC_WORD_COMP_CONST(pCompiler, pchWord, cchLeft, "-queue", 6)) … … 4920 4927 if (&pszContent[offNext] == pchTmp) 4921 4928 { 4922 fprintf(stderr, "#%03u: <empty>\n", Compiler.iLine , &pszContent[off]);4929 fprintf(stderr, "#%03u: <empty>\n", Compiler.iLine); 4923 4930 Compiler.iLine++; 4924 4931 off = offNext += cchEolSeq; … … 4927 4934 if (pszContent[offNext] == '#') 4928 4935 { 4929 fprintf(stderr, "#%03u: <comment>\n", Compiler.iLine , &pszContent[off]);4936 fprintf(stderr, "#%03u: <comment>\n", Compiler.iLine); 4930 4937 Compiler.iLine++; 4931 4938 offNext = pchTmp - pszContent; … … 4959 4966 { 4960 4967 size_t offEol = off + cchLine; 4961 while (offFirstWord < off + cchLine&& KMK_CC_EVAL_IS_SPACE(pszContent[offFirstWord]))4968 while (offFirstWord < offEol && KMK_CC_EVAL_IS_SPACE(pszContent[offFirstWord])) 4962 4969 offFirstWord++; 4963 4970 } … … 5139 5146 if (pEvalProg) 5140 5147 { 5141 int rc = 0;5142 5143 5148 pEvalProg->pBlockTail = pBlock; 5144 5149 pEvalProg->pFirstInstr = (PKMKCCEVALCORE)kmk_cc_block_get_next_ptr(pBlock);
Note:
See TracChangeset
for help on using the changeset viewer.