⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bug-136564.c

📁 sdcc是为51等小型嵌入式cpu设计的c语言编译器支持数种不同类型的cpu
💻 C
字号:
/*   bug-136564.c   loop induction*/#include <testfwk.h>volatile unsigned char p;unsigned char i_result[3];voidfoo (void){  unsigned char i;  unsigned char u;  static unsigned char c = '?';  u = 0;  while (1)    {      i = 0;      switch (u)        {          case 0:            /* this BBlock _case_0_0:               - changes i               - jumps to the successor "_swBrk_0" */            p = 0;            i = 42; /* fixed: Absent in "main.asm" */            break;          case 1:           /* the while loop:               - inducts i               - has the exit block "_swBrk_0"               sdcc inserts a new BBlock "loopExitLbl" before "_swBrk_0".               "loopExitLbl" becomes the new successor for the exit blocks of the while loop.               In "loopExitLbl" i can be restored without interference from               "_swBrk_0". */            while (c != 'x' && i < 9 )              i++;            break;          default:            p = 2;            i = 24; /* fixed: Absent in "main.asm" */        }      p = i;      i_result[u] = i;      if (u >= 2)        return;      u++;    }}int _strncmp (  char * first,  char * last,  unsigned count  ){  while (--count && *first && *first == *last) {    first++;    last++;  }  return( *first - *last );}voidtestInducion(void){  foo();  ASSERT(i_result[0] == 42);  ASSERT(i_result[1] ==  9);  ASSERT(i_result[2] == 24);  ASSERT(_strncmp ("SDCC is great", "SDCC is buggy", sizeof("SDCC is" )) == 0);  ASSERT(_strncmp ("SDCC is great", "SDCC is buggy", sizeof("SDCC is ")) != 0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -