LCOV - code coverage report
Current view: top level - test - test-sizeof.c (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 33 33 100.0 %
Date: 2019-08-22 15:41:25 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: LGPL-2.1+ */
       2             : 
       3             : #include <sched.h>
       4             : #include <stdio.h>
       5             : #include <string.h>
       6             : 
       7             : #define __STDC_WANT_IEC_60559_TYPES_EXT__
       8             : #include <float.h>
       9             : 
      10             : #include "time-util.h"
      11             : 
      12             : /* Print information about various types. Useful when diagnosing
      13             :  * gcc diagnostics on an unfamiliar architecture. */
      14             : 
      15             : #pragma GCC diagnostic ignored "-Wtype-limits"
      16             : 
      17             : #define info(t)                                                         \
      18             :         printf("%s → %zu bits%s, %zu byte alignment\n", STRINGIFY(t),   \
      19             :                sizeof(t)*CHAR_BIT,                                      \
      20             :                strstr(STRINGIFY(t), "signed") ? "" :                    \
      21             :                (t)-1 < (t)0 ? ", signed" : ", unsigned",                \
      22             :                __alignof__(t))
      23             : 
      24             : enum Enum {
      25             :         enum_value,
      26             : };
      27             : 
      28             : enum BigEnum {
      29             :         big_enum_value = UINT64_C(1),
      30             : };
      31             : 
      32             : enum BigEnum2 {
      33             :         big_enum2_pos = UINT64_C(1),
      34             :         big_enum2_neg = UINT64_C(-1),
      35             : };
      36             : 
      37           1 : int main(void) {
      38           1 :         info(char);
      39           1 :         info(signed char);
      40           1 :         info(unsigned char);
      41           1 :         info(short unsigned);
      42           1 :         info(unsigned);
      43           1 :         info(long unsigned);
      44           1 :         info(long long unsigned);
      45           1 :         info(__syscall_ulong_t);
      46           1 :         info(__syscall_slong_t);
      47             : 
      48           1 :         info(float);
      49           1 :         info(double);
      50           1 :         info(long double);
      51             : 
      52             : #ifdef FLT128_MAX
      53           1 :         info(_Float128);
      54           1 :         info(_Float64);
      55           1 :         info(_Float64x);
      56           1 :         info(_Float32);
      57           1 :         info(_Float32x);
      58             : #endif
      59             : 
      60           1 :         info(size_t);
      61           1 :         info(ssize_t);
      62           1 :         info(time_t);
      63           1 :         info(usec_t);
      64           1 :         info(__time_t);
      65           1 :         info(pid_t);
      66           1 :         info(uid_t);
      67           1 :         info(gid_t);
      68             : 
      69           1 :         info(__cpu_mask);
      70             : 
      71           1 :         info(enum Enum);
      72           1 :         info(enum BigEnum);
      73           1 :         info(enum BigEnum2);
      74             :         assert_cc(sizeof(enum BigEnum2) == 8);
      75           1 :         printf("big_enum2_pos → %zu\n", sizeof(big_enum2_pos));
      76           1 :         printf("big_enum2_neg → %zu\n", sizeof(big_enum2_neg));
      77             : 
      78           1 :         return 0;
      79             : }

Generated by: LCOV version 1.14