modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/20100915-1.c (about)

     1  /* PR rtl-optimization/45593 */
     2  /* Testcase by Arnaud Lacombe <lacombar@gmail.com> */
     3  
     4  typedef unsigned int __u32;
     5  typedef __u32 __be32;
     6  static inline __attribute__((always_inline)) int __attribute__((__cold__)) printk(const char *s, ...) { return 0; }
     7  typedef struct journal_s journal_t;
     8  typedef struct journal_header_s
     9  {
    10   __be32 h_magic;
    11   __be32 h_blocktype;
    12   __be32 h_sequence;
    13  } journal_header_t;
    14  typedef struct journal_superblock_s
    15  {
    16   journal_header_t s_header;
    17   __be32 s_blocksize;
    18   __be32 s_maxlen;
    19  } journal_superblock_t;
    20  struct journal_s
    21  {
    22   struct buffer_head *j_sb_buffer;
    23   journal_superblock_t *j_superblock;
    24   int j_format_version;
    25   int j_blocksize;
    26   unsigned int j_maxlen;
    27  };
    28  static void journal_fail_superblock (journal_t *journal)
    29  {
    30   journal->j_sb_buffer = ((void *)0);
    31  }
    32  static int journal_get_superblock(journal_t *journal)
    33  {
    34   struct buffer_head *bh;
    35   journal_superblock_t *sb;
    36   int err = -100;
    37   bh = journal->j_sb_buffer;
    38   if (!buffer_uptodate(bh)) {
    39    if (!buffer_uptodate(bh)) {
    40     printk ("JBD: IO error reading journal superblock\n");
    41     goto out;
    42    }
    43   }
    44   err = -101;
    45   if (sb->s_header.h_magic != (( __be32)(__u32)(0)) ||
    46       sb->s_blocksize != (( __be32)(__u32)(journal->j_blocksize))) {
    47    printk("JBD: no valid journal superblock found\n");
    48    goto out;
    49   }
    50   switch((( __u32)(__be32)(sb->s_header.h_blocktype))) {
    51   case 0:
    52   case 1:
    53    break;
    54   default:
    55    goto out;
    56   }
    57   if ((( __u32)(__be32)(sb->s_maxlen)) < journal->j_maxlen)
    58    journal->j_maxlen = (( __u32)(__be32)(sb->s_maxlen));
    59   else if ((( __u32)(__be32)(sb->s_maxlen)) > journal->j_maxlen) {
    60    printk ("JBD: journal file too short\n");
    61    goto out;
    62   }
    63   return 0;
    64  out:
    65   journal_fail_superblock(journal);
    66   return err;
    67  }
    68  static int load_superblock(journal_t *journal)
    69  {
    70   journal_get_superblock(journal);
    71   return 0;
    72  }
    73  int jbd2_journal_update_format (journal_t *journal)
    74  {
    75   journal_get_superblock(journal);
    76   return 0;
    77  }
    78  int jbd2_journal_wipe(journal_t *journal, int write)
    79  {
    80   load_superblock(journal);
    81   return 0;
    82  }