diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2017-10-13 11:18:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-13 11:18:17 -0500 |
commit | 52fe95165472b6c5947f8b8f74d3fc36789b1224 (patch) | |
tree | f1858131bb71b9c2de11527c7d8e01c267dfde87 /src/codegen/impl_debug.rs | |
parent | d5a5c50ebf05b84ec16a9989697159be49874ed2 (diff) | |
parent | 1313995bdf2db4bd2be1a184188d130a296b9997 (diff) |
Auto merge of #1080 - fitzgen:creduce-in-driver-py, r=pepyakin
Automatically run `creduce` in `csmith-fuzzing/driver.py`
Reduced test cases FTW \o/
r? @emilio or @pepyakin
Also, this prints out everything needed to file a bug report; just copy paste! For example, this is what it looks like when I ran it most recently:
<details><pre><code>
$ ./driver.py
Fuzzing `bindgen` with C-Smith...
Iteration: 0
Error: ['./predicate.py', '--bindgen-args', '--with-derive-partialeq --with-derive-eq --with-derive-partialord --with-derive-ord --with-derive-hash --with-derive-default -- -I/home/fitzgen/rust-bindgen/csmith-fuzzing', '/tmp/input-uij7lxep.h'] exited with code 1
+Running: ['cargo', 'run', '--manifest-path', '/home/fitzgen/rust-bindgen/Cargo.toml', '--', '/tmp/input-uij7lxep.h', '-o', '/tmp/bindings-vyl0qlte.rs', '--with-derive-partialeq', '--with-derive-eq', '--with-derive-partialord', '--with-derive-ord', '--with-derive-hash', '--with-derive-default', '--', '-I/home/fitzgen/rust-bindgen/csmith-fuzzing']
+Running: ['rustc', '--crate-type', 'lib', '--test', '-o', '/tmp/layout-tests-41kuqr8x', '/tmp/bindings-vyl0qlte.rs']
+Error: running `rustc` on the emitted bindings failed
++error[E0600]: cannot apply unary operator `-` to type `u32`
++ --> /tmp/bindings-vyl0qlte.rs:27:333
++ |
++27 | } pub const g_79 : :: std :: os :: raw :: c_ushort = 1 ; pub const g_83 : :: std :: os :: raw :: c_schar = -50 ; pub const g_86 : :: std :: os :: raw :: c_int = -417508947 ; pub const g_93 : :: std :: os :: raw :: c_int = -9 ; pub const g_122 : :: std :: os :: raw :: c_short = 1 ; pub const g_124 : :: std :: os :: raw :: c_uint = -5 ; extern "C" {
++ | ^^
++
++error: aborting due to previous error
++
-------------------- Failing test case: /tmp/input-uij7lxep.h --------------------
/*
* This is a RANDOMLY GENERATED PROGRAM.
*
* Generator: csmith 2.2.0
* Git version: dcef523
* Options: -o /tmp/input-uij7lxep.h --no-checksum --nomain --max-block-size 1 --max-block-depth 1
* Seed: 1763418240
*/
#include "csmith.h"
volatile uint64_t csmith_sink_ = 0;
static long __undefined;
/* --- Struct/Union Declarations --- */
union U1 {
const volatile int32_t f0;
};
union U2 {
volatile int64_t f0;
};
/* --- GLOBAL VARIABLES --- */
static uint64_t g_9[10] = {0x8E418A52733582F8LL,7UL,0x8E418A52733582F8LL,0x8E418A52733582F8LL,7UL,0x8E418A52733582F8LL,0x8E418A52733582F8LL,7UL,0x8E418A52733582F8LL,0x8E418A52733582F8LL};
static int32_t g_23 = (-1L);
static uint8_t g_26[6] = {1UL,1UL,1UL,1UL,1UL,1UL};
static uint8_t g_28 = 0x94L;
static int32_t g_30[2] = {(-1L),(-1L)};
static volatile union U2 g_71 = {-1L};/* VOLATILE GLOBAL g_71 */
static int32_t *g_73 = &g_23;
static int32_t **g_72 = &g_73;
static const union U1 g_77 = {-9L};/* VOLATILE GLOBAL g_77 */
static uint16_t g_79 = 1UL;
static int8_t g_83 = 0xCEL;
static int32_t g_86 = 0xE71D51ADL;
static int32_t g_93 = (-9L);
static int16_t g_122 = 1L;
static uint32_t g_124 = 18446744073709551611UL;
static uint16_t g_127[7] = {0x42CEL,0x3A86L,0x42CEL,0x42CEL,0x3A86L,0x42CEL,0x42CEL};
static uint32_t g_128 = 1UL;
static int8_t g_130 = 0xF4L;
static const int32_t *g_135 = &g_23;
static const int32_t ** volatile g_134 = &g_135;/* VOLATILE GLOBAL g_134 */
/* --- FORWARD DECLARATIONS --- */
static uint64_t func_1(void);
static const int32_t * func_2(uint32_t p_3);
static int64_t func_6(uint32_t p_7, int32_t p_8);
static int32_t func_11(int64_t p_12);
static int32_t func_15(const uint8_t p_16, int32_t p_17, int32_t * p_18, uint32_t p_19);
static uint8_t func_20(int32_t * const p_21);
static int32_t * const func_33(int64_t p_34, uint8_t p_35);
static int32_t * func_43(uint16_t p_44, int32_t p_45, int32_t * p_46, uint32_t p_47, const int64_t p_48);
static int8_t func_57(int16_t p_58, uint64_t p_59, int32_t p_60, uint32_t p_61);
static const union U1 func_66(int32_t p_67, int32_t p_68, uint32_t p_69, int32_t p_70);
/* --- FUNCTIONS --- */
/* ------------------------------------------ */
/*
* reads : g_9 g_23 g_26 g_30 g_71 g_72 g_73 g_77 g_83 g_86 g_79 g_122 g_28 g_71.f0 g_127 g_128 g_134
* writes: g_23 g_26 g_30 g_73 g_79 g_83 g_86 g_93 g_122 g_127 g_135
*/
static uint64_t func_1(void)
{ /* block id: 0 */
uint32_t l_10 = 0x58E17C10L;
int64_t *l_92 = (void*)0;
const int32_t **l_133 = (void*)0;
(*g_134) = func_2((safe_sub_func_int64_t_s_s((g_93 = func_6((g_9[8] , l_10), func_11(g_9[6]))), (-1L))));
return l_10;
}
/* ------------------------------------------ */
/*
* reads : g_79 g_73 g_23 g_83 g_30 g_122 g_28 g_71.f0 g_9 g_127 g_128 g_72
* writes: g_79 g_23 g_122 g_127
*/
static const int32_t * func_2(uint32_t p_3)
{ /* block id: 46 */
int64_t l_96[8][8][4] = {{{0x2714D024A44AA9F2LL,0xC90574D26467E2B5LL,3L,0xE8BAC2835E52A12ELL},{1L,(-7L),1L,1L},{1L,1L,(-1L),0x389D4FE02E2238E9LL},{1L,6L,0x389D4FE02E2238E9LL,(-1L)},{(-5L),(-1L),0xBF1637F256DA865BLL,3L},{0xA819422B6A99605DLL,0xBF1637F256DA865BLL,0xBF1637F256DA865BLL,6L},{(-1L),0xA122FC4CEA799ADALL,0x3E7469BA6CE2C691LL,0xB04FC3DD168C87B4LL},{(-1L),(-5L),0xC90574D26467E2B5LL,1L}},{{1L,6L,0L,1L},{(-6L),(-5L),0xAE3508C96F5F53E4LL,0xB04FC3DD168C87B4LL},{1L,0xA122FC4CEA799ADALL,0xE8BAC2835E52A12ELL,6L},{(-10L),0xBF1637F256DA865BLL,0xA819422B6A99605DLL,3L},{1L,(-10L),(-5L),0x2714D024A44AA9F2LL},{0xA819422B6A99605DLL,0xE8BAC2835E52A12ELL,1L,(-7L)},{0xA122FC4CEA799ADALL,0x389D4FE02E2238E9LL,1L,0x389D4FE02E2238E9LL},{0xA75F9311F6BCDC6FLL,0xA819422B6A99605DLL,1L,(-1L)}},{{1L,(-6L),0x2714D024A44AA9F2LL,1L},{1L,0x8765FAFB16363166LL,(-1L),0x9157731B4BD6B462LL},{1L,(-1L),0x2714D024A44AA9F2LL,(-2L)},{1L,0x9157731B4BD6B462LL,1L,(-1L)},{0xA75F9311F6BCDC6FLL,0xB04FC3DD168C87B4LL,1L,0xC90574D26467E2B5LL},{0xA122FC4CEA799ADALL,0x593F29F9B9B769E5LL,1L,(-1L)},{0xA819422B6A99605DLL,1L,(-5L),9L},{1L,0xAE3508C96F5F53E4LL,0xA819422B6A99605DLL,0xA819422B6A99605DLL}},{{(-10L),(-10L),0xE8BAC2835E52A12ELL,0x8765FAFB16363166LL},{1L,(-2L),0xAE3508C96F5F53E4LL,0xA122FC4CEA799ADALL},{(-6L),(-1L),0L,0xAE3508C96F5F53E4LL},{1L,(-1L),0xC90574D26467E2B5LL,0xA122FC4CEA799ADALL},{(-1L),(-2L),0x3E7469BA6CE2C691LL,0x8765FAFB16363166LL},{(-1L),(-10L),0xBF1637F256DA865BLL,0xA819422B6A99605DLL},{6L,0xAE3508C96F5F53E4LL,(-10L),9L},{(-1L),1L,(-7L),(-1L)}},{{1L,0x593F29F9B9B769E5LL,(-10L),0xC90574D26467E2B5LL},{0x9157731B4BD6B462LL,0xB04FC3DD168C87B4LL,0x9157731B4BD6B462LL,(-1L)},{1L,0x9157731B4BD6B462LL,3L,(-2L)},{0xC90574D26467E2B5LL,(-1L),0xA122FC4CEA799ADALL,0x9157731B4BD6B462LL},{(-5L),0x8765FAFB16363166LL,0xA122FC4CEA799ADALL,1L},{0xC90574D26467E2B5LL,(-6L),3L,(-1L)},{1L,0xA819422B6A99605DLL,0x9157731B4BD6B462LL,0x389D4FE02E2238E9LL},{0x9157731B4BD6B462LL,0x389D4FE02E2238E9LL,(-10L),(-7L)}},{{1L,0xE8BAC2835E52A12ELL,(-7L),0x2714D024A44AA9F2LL},{(-1L),(-10L),(-10L),3L},{6L,0xBF1637F256DA865BLL,0xBF1637F256DA865BLL,6L},{(-1L),0xA122FC4CEA799ADALL,0x3E7469BA6CE2C691LL,0xB04FC3DD168C87B4LL},{(-1L),(-5L),0xC90574D26467E2B5LL,1L},{1L,6L,0L,1L},{(-6L),(-5L),0xAE3508C96F5F53E4LL,0xB04FC3DD168C87B4LL},{1L,0xA122FC4CEA799ADALL,0xE8BAC2835E52A12ELL,6L}},{{(-10L),0xBF1637F256DA865BLL,0xA819422B6A99605DLL,3L},{1L,(-10L),(-5L),0x2714D024A44AA9F2LL},{0xA819422B6A99605DLL,0xE8BAC2835E52A12ELL,1L,(-7L)},{0xA122FC4CEA799ADALL,0x389D4FE02E2238E9LL,1L,0x389D4FE02E2238E9LL},{0xA75F9311F6BCDC6FLL,0xA819422B6A99605DLL,1L,(-1L)},{9L,(-1L),0xC90574D26467E2B5LL,1L},{1L,0x2BD54EFE8F334EEALL,(-5L),0xA75F9311F6BCDC6FLL},{1L,0x2714D024A44AA9F2LL,0xC90574D26467E2B5LL,3L}},{{9L,0xA75F9311F6BCDC6FLL,1L,0xAE3508C96F5F53E4LL},{0x3E7469BA6CE2C691LL,0x593F29F9B9B769E5LL,0x9157731B4BD6B462LL,(-6L)},{1L,0xBF1637F256DA865BLL,1L,(-10L)},{6L,0x389D4FE02E2238E9LL,(-1L),0x8765FAFB16363166LL},{0x9157731B4BD6B462LL,(-1L),6L,6L},{1L,1L,(-1L),0x2BD54EFE8F334EEALL},{0x389D4FE02E2238E9LL,3L,(-1L),1L},{(-1L),(-10L),1L,(-1L)}}};
uint16_t *l_101 = (void*)0;
uint16_t *l_102 = &g_79;
int16_t *l_121 = &g_122;
uint32_t *l_123[8] = {&g_124,&g_124,&g_124,&g_124,&g_124,&g_124,&g_124,&g_124};
int32_t l_125 = 0xD58AA24FL;
uint16_t *l_126 = &g_127[5];
int8_t *l_129[9] = {&g_83,&g_83,&g_83,&g_83,&g_83,&g_83,&g_83,&g_83,&g_83};
int32_t l_131 = (-9L);
int32_t l_132[1];
int i, j, k;
for (i = 0; i < 1; i++)
l_132[i] = 0x27581F2DL;
l_132[0] &= (((safe_lshift_func_int8_t_s_s(l_96[0][3][3], 4)) >= (l_131 |= ((((safe_rshift_func_uint8_t_u_u((safe_sub_func_int64_t_s_s(((((*l_102)++) ^ ((safe_unary_minus_func_uint64_t_u((((0xA2D7867E7C57241CLL && (safe_mul_func_int16_t_s_s((((*l_126) = (safe_mul_func_int16_t_s_s(((safe_add_func_int8_t_s_s(p_3, (((l_125 = (~(p_3 , ((((*g_73) &= (!l_96[0][3][3])) == (safe_lshift_func_int8_t_s_u(g_83, ((((((~l_96[0][3][3]) , (((safe_mul_func_int16_t_s_s(((*l_121) &= (l_96[1][4][2] >= (safe_rshift_func_int8_t_s_s(((p_3 > p_3) > p_3), g_30[0])))), 65535UL)) , l_96[0][3][3]) != l_96[0][3][3])) , p_3) || 0L) ^ 0x232EDDAFL) , g_28)))) <= 0x20AB37EAL)))) , l_96[1][1][1]) || p_3))) == 0x7A964C9DL), p_3))) <= 0xC26FL), g_71.f0))) <= 65534UL) == p_3))) , g_71.f0)) & g_30[0]), (-2L))), g_9[8])) > p_3) && g_127[4]) <= g_128))) , (-1L));
return (*g_72);
}
/* ------------------------------------------ */
/*
* reads : g_86 g_72 g_73
* writes: g_23
*/
static int64_t func_6(uint32_t p_7, int32_t p_8)
{ /* block id: 41 */
uint8_t *l_90 = &g_26[3];
int32_t l_91[10] = {0xE2C54351L,0xC5D07927L,0xE2C54351L,(-1L),(-1L),0xE2C54351L,0xC5D07927L,0xE2C54351L,(-1L),(-1L)};
int i;
(**g_72) = (safe_unary_minus_func_int64_t_s(((0UL > (safe_div_func_uint64_t_u_u(g_86, 0x5F43E010D33A1293LL))) || (l_91[2] = (l_90 != l_90)))));
return l_91[2];
}
/* ------------------------------------------ */
/*
* reads : g_9 g_23 g_26 g_30 g_71 g_72 g_73 g_77 g_83 g_86
* writes: g_23 g_26 g_30 g_73 g_79 g_83 g_86
*/
static int32_t func_11(int64_t p_12)
{ /* block id: 1 */
int32_t * const l_22 = &g_23;
uint8_t * const l_27 = &g_28;
for (p_12 = (-6); (p_12 == (-7)); p_12 = safe_sub_func_uint8_t_u_u(p_12, 8))
{ /* block id: 4 */
uint8_t *l_25 = &g_26[5];
int32_t *l_29 = &g_30[0];
int32_t *l_85 = &g_86;
(*l_85) |= ((*l_22) = func_15(((*l_25) = func_20(l_22)), (l_27 != l_27), l_29, p_12));
}
return (*l_22);
}
/* ------------------------------------------ */
/*
* reads : g_26 g_30 g_9 g_23 g_71 g_72 g_73 g_77 g_83
* writes: g_30 g_23 g_73 g_79 g_83
*/
static int32_t func_15(const uint8_t p_16, int32_t p_17, int32_t * p_18, uint32_t p_19)
{ /* block id: 9 */
const uint32_t l_36[2][8] = {{0xD3ED23C5L,4UL,4UL,0xD3ED23C5L,1UL,0x0627E80AL,1UL,0xD3ED23C5L},{4UL,1UL,4UL,4294967295UL,0xE58ED0BDL,0xE58ED0BDL,4294967295UL,4UL}};
uint8_t l_37 = 0UL;
int32_t *l_50 = &g_30[0];
int32_t **l_49 = &l_50;
int32_t **l_84 = &g_73;
int i, j;
(*p_18) = (&p_16 != ((safe_rshift_func_int8_t_s_s(0x1EL, func_20(((*l_84) = func_33(((l_36[0][7] ^ (l_37 | (safe_mul_func_int16_t_s_s(((0x33933B839BF5BF81LL & (((((safe_div_func_uint32_t_u_u((((safe_unary_minus_func_int8_t_s(((-9L) == (g_26[5] > func_20(((*l_49) = func_43(((void*)0 == &p_16), l_37, p_18, l_36[0][2], p_16))))))) == 0UL) , 0x19F88DD0L), l_36[1][1])) & g_26[3]) , 0x0ECF58A4L) & p_16) , g_30[0])) >= 0xCFB11589A458230BLL), g_26[4])))) <= g_9[6]), p_17))))) , &l_37));
return (*g_73);
}
/* ------------------------------------------ */
/*
* reads : g_9 g_23 g_30
* writes: g_23 g_30
*/
static uint8_t func_20(int32_t * const p_21)
{ /* block id: 5 */
uint32_t l_24 = 1UL;
(*p_21) ^= g_9[9];
return l_24;
}
/* ------------------------------------------ */
/*
* reads : g_23 g_30 g_71 g_72 g_73 g_77 g_83
* writes: g_23 g_73 g_79 g_83 g_30
*/
static int32_t * const func_33(int64_t p_34, uint8_t p_35)
{ /* block id: 14 */
int32_t **l_75[4] = {(void*)0,(void*)0,(void*)0,(void*)0};
int32_t **l_76 = &g_73;
int32_t l_78[3][6][9] = {{{(-3L),8L,(-1L),0x33086262L,0x0EF155D2L,0x2C7DCB21L,0x0EF155D2L,0x33086262L,(-1L)},{(-1L),(-1L),(-9L),0xF1CC5CA3L,0x9E6D5949L,(-3L),0x0EF155D2L,(-1L),1L},{0xB4E13384L,0x3F16A1EAL,(-5L),(-6L),1L,(-3L),(-3L),1L,(-6L)},{(-9L),(-3L),(-9L),0xFDC3C1A3L,0x2C7DCB21L,0x3F16A1EAL,8L,1L,0x9E6D5949L},{(-3L),(-5L),(-1L),0x9E6D5949L,8L,(-1L),(-6L),(-1L),8L},{0xFDC3C1A3L,(-6L),(-6L),0xFDC3C1A3L,(-5L),5L,(-1L),0x33086262L,8L}},{{0x33086262L,(-9L),0x0EF155D2L,(-6L),(-3L),0x9E6D5949L,0x2C7DCB21L,0x2C7DCB21L,0x9E6D5949L},{(-5L),0xF1CC5CA3L,0xFDC3C1A3L,0xF1CC5CA3L,(-5L),0x33086262L,(-9L),0x0EF155D2L,(-6L)},{(-5L),5L,(-1L),0x33086262L,8L,(-9L),1L,0x3F16A1EAL,1L},{0x33086262L,0x2C7DCB21L,0xB4E13384L,0xB4E13384L,0x2C7DCB21L,0x33086262L,(-3L),(-5L),(-1L)},{0xFDC3C1A3L,0x2C7DCB21L,0x3F16A1EAL,8L,1L,0x9E6D5949L,0xB4E13384L,0xF1CC5CA3L,0xF1CC5CA3L},{0x3F16A1EAL,0x9E6D5949L,(-5L),0xB4E13384L,(-5L),0x9E6D5949L,0x3F16A1EAL,0xFDC3C1A3L,0x33086262L}},{{1L,(-6L),(-5L),0x3F16A1EAL,0xB4E13384L,(-3L),5L,0x9E6D5949L,0x0EF155D2L},{0xFDC3C1A3L,1L,0x33086262L,0x9E6D5949L,0x9E6D5949L,0x33086262L,1L,0xFDC3C1A3L,0x18108949L},{(-3L),(-1L),0xFDC3C1A3L,0x9E6D5949L,(-9L),0x18108949L,8L,(-6L),(-3L)},{0x18108949L,0xF1CC5CA3L,(-3L),0x3F16A1EAL,(-3L),0x3F16A1EAL,(-3L),0xF1CC5CA3L,0x18108949L},{5L,0x3F16A1EAL,(-9L),0xB4E13384L,(-3L),8L,(-1L),0x33086262L,0x0EF155D2L},{(-6L),0x33086262L,0xB4E13384L,(-1L),(-9L),(-9L),(-1L),0xB4E13384L,0x33086262L}}};
int i, j, k;
for (g_23 = 0; (g_23 != (-1)); g_23--)
{ /* block id: 17 */
int32_t *l_53 = &g_30[0];
int32_t ***l_74[2][8][4] = {{{(void*)0,&g_72,&g_72,(void*)0},{&g_72,(void*)0,&g_72,&g_72},{&g_72,&g_72,&g_72,&g_72},{(void*)0,&g_72,&g_72,&g_72},{&g_72,&g_72,&g_72,&g_72},{&g_72,(void*)0,&g_72,(void*)0},{&g_72,&g_72,&g_72,&g_72},{(void*)0,&g_72,&g_72,(void*)0}},{{&g_72,(void*)0,&g_72,&g_72},{&g_72,&g_72,&g_72,&g_72},{(void*)0,&g_72,&g_72,&g_72},{&g_72,&g_72,&g_72,&g_72},{&g_72,(void*)0,&g_72,(void*)0},{&g_72,&g_72,&g_72,&g_72},{(void*)0,&g_72,&g_72,(void*)0},{&g_72,(void*)0,&g_72,&g_72}}};
int8_t *l_80 = (void*)0;
int8_t *l_81 = (void*)0;
int8_t *l_82 = &g_83;
int i, j, k;
(*l_53) = (l_53 == (((safe_unary_minus_func_int8_t_s((safe_mod_func_int8_t_s_s(g_30[1], ((*l_82) ^= func_57((g_79 = (safe_mul_func_int16_t_s_s(p_35, ((*l_53) || (safe_mod_func_uint32_t_u_u(((func_66((*l_53), (g_71 , ((l_75[1] = g_72) != (l_76 = &g_73))), g_30[1], p_35) , p_34) || 0xFB8AAA841158A35CLL), l_78[0][3][7])))))), l_78[0][3][7], p_35, p_35)))))) , (**l_76)) , (*g_72)));
}
return (*l_76);
}
/* ------------------------------------------ */
/*
* reads : g_30
* writes: g_30
*/
static int32_t * func_43(uint16_t p_44, int32_t p_45, int32_t * p_46, uint32_t p_47, const int64_t p_48)
{ /* block id: 10 */
(*p_46) &= 0x20A048C8L;
return p_46;
}
/* ------------------------------------------ */
/*
* reads :
* writes:
*/
static int8_t func_57(int16_t p_58, uint64_t p_59, int32_t p_60, uint32_t p_61)
{ /* block id: 28 */
return p_61;
}
/* ------------------------------------------ */
/*
* reads : g_73 g_23 g_72 g_77
* writes: g_73
*/
static const union U1 func_66(int32_t p_67, int32_t p_68, uint32_t p_69, int32_t p_70)
{ /* block id: 20 */
if (((*g_73) | 0xF6324B7CL))
{ /* block id: 21 */
(*g_72) = (*g_72);
}
else
{ /* block id: 23 */
(*g_72) = (*g_72);
}
return g_77;
}
/************************ statistics *************************
XXX max struct depth: 0
breakdown:
depth: 0, occurrence: 24
XXX total union variables: 2
XXX non-zero bitfields defined in structs: 0
XXX zero bitfields defined in structs: 0
XXX const bitfields defined in structs: 0
XXX volatile bitfields defined in structs: 0
XXX structs with bitfields in the program: 0
breakdown:
XXX full-bitfields structs in the program: 0
breakdown:
XXX times a bitfields struct's address is taken: 0
XXX times a bitfields struct on LHS: 0
XXX times a bitfields struct on RHS: 0
XXX times a single bitfield on LHS: 0
XXX times a single bitfield on RHS: 0
XXX max expression depth: 44
breakdown:
depth: 1, occurrence: 24
depth: 2, occurrence: 3
depth: 6, occurrence: 1
depth: 8, occurrence: 1
depth: 9, occurrence: 1
depth: 24, occurrence: 1
depth: 31, occurrence: 1
depth: 44, occurrence: 1
XXX total number of pointers: 34
XXX times a variable address is taken: 33
XXX times a pointer is dereferenced on RHS: 11
breakdown:
depth: 1, occurrence: 10
depth: 2, occurrence: 1
XXX times a pointer is dereferenced on LHS: 18
breakdown:
depth: 1, occurrence: 17
depth: 2, occurrence: 1
XXX times a pointer is compared with null: 1
XXX times a pointer is compared with address of another variable: 0
XXX times a pointer is compared with another pointer: 2
XXX times a pointer is qualified to be dereferenced: 69
XXX max dereference level: 2
breakdown:
level: 0, occurrence: 0
level: 1, occurrence: 52
level: 2, occurrence: 7
XXX number of pointers point to pointers: 8
XXX number of pointers point to scalars: 26
XXX number of pointers point to structs: 0
XXX percent of pointers has null in alias set: 23.5
XXX average alias set size: 1.15
XXX times a non-volatile is read: 93
XXX times a non-volatile is write: 46
XXX times a volatile is read: 3
XXX times read thru a pointer: 0
XXX times a volatile is write: 1
XXX times written thru a pointer: 0
XXX times a volatile is available for access: 9
XXX percentage of non-volatile access: 97.2
XXX forward jumps: 0
XXX backward jumps: 0
XXX stmts: 23
XXX max block depth: 1
breakdown:
depth: 0, occurrence: 19
depth: 1, occurrence: 4
XXX percentage a fresh-made variable is used: 23.8
XXX percentage an existing variable is used: 76.2
FYI: the random generator makes assumptions about the integer size. See platform.info for more details.
********************* end of statistics **********************/
Reducing failing test case with `creduce`...
...searching for "error[E0600]: cannot apply unary operator `-` to type `u32`".
...and reducing with this script:
#!/usr/bin/env bash
set -eu
/home/fitzgen/rust-bindgen/csmith-fuzzing/predicate.py --bindgen-args '--with-derive-partialeq --with-derive-eq --with-derive-partialord --with-derive-ord --with-derive-hash --with-derive-default -- -I/home/fitzgen/rust-bindgen/csmith-fuzzing' --expect-compile-fail --rustc-grep 'error\[E0600\]\:\ cannot\ apply\ unary\ operator\ \`\-\`\ to\ type\ \`u32\`' input-uij7lxep.h
Running: ['creduce', '--n', '48', '/tmp/input-uij7lxep.h.predicate.sh', '/tmp/input-uij7lxep.h']
===< 2211 >===
running 48 interestingness tests in parallel
===< pass_includes :: 0 >===
===< pass_unifdef :: 0 >===
===< pass_comments :: 0 >===
(27.9 %, 11585 bytes)
===< pass_blank :: 0 >===
(28.2 %, 11527 bytes)
===< pass_clang_binsrch :: replace-function-def-with-decl >===
(85.1 %, 2400 bytes)
===< pass_clang_binsrch :: remove-unused-function >===
(93.3 %, 1084 bytes)
===< pass_lines :: 0 >===
(93.2 %, 1087 bytes)
(94.4 %, 898 bytes)
(95.8 %, 671 bytes)
(96.6 %, 553 bytes)
(98.2 %, 294 bytes)
(98.8 %, 186 bytes)
(99.0 %, 156 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 1 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 2 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 3 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 4 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 6 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 8 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 10 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_clang_binsrch :: replace-function-def-with-decl >===
===< pass_clang_binsrch :: remove-unused-function >===
===< pass_clang :: remove-unused-function >===
===< pass_balanced :: curly >===
===< pass_balanced :: curly2 >===
===< pass_balanced :: curly3 >===
===< pass_balanced :: parens-to-zero >===
===< pass_clang :: callexpr-to-value >===
===< pass_clang :: replace-callexpr >===
===< pass_clang :: simplify-callexpr >===
===< pass_clang :: remove-unused-enum-member >===
===< pass_clang :: remove-enum-member-value >===
===< pass_clang_binsrch :: remove-unused-var >===
===< pass_special :: a >===
===< pass_special :: b >===
===< pass_special :: c >===
===< pass_include_includes :: 0 >===
===< pass_ternary :: b >===
===< pass_ternary :: c >===
===< pass_balanced :: curly >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_balanced :: curly2 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_balanced :: curly3 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_balanced :: parens >===
===< pass_balanced :: angles >===
===< pass_balanced :: square >===
===< pass_balanced :: curly-inside >===
===< pass_balanced :: parens-inside >===
===< pass_balanced :: angles-inside >===
===< pass_balanced :: square-inside >===
===< pass_balanced :: curly-only >===
===< pass_balanced :: angles-only >===
===< pass_balanced :: square-only >===
===< pass_clang :: remove-namespace >===
===< pass_clang :: aggregate-to-scalar >===
===< pass_clang :: param-to-global >===
===< pass_clang :: param-to-local >===
===< pass_clang :: remove-nested-function >===
===< pass_clang :: union-to-struct >===
===< pass_clang :: return-void >===
===< pass_clang :: simple-inliner >===
===< pass_clang :: reduce-pointer-level >===
===< pass_clang :: lift-assignment-expr >===
===< pass_clang :: copy-propagation >===
===< pass_clang :: callexpr-to-value >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang :: replace-callexpr >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang :: simplify-callexpr >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang :: remove-unused-function >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang :: remove-unused-enum-member >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang :: remove-enum-member-value >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang_binsrch :: remove-unused-var >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clang :: simplify-if >===
===< pass_clang :: reduce-array-dim >===
===< pass_clang :: reduce-array-size >===
===< pass_clang :: move-function-body >===
===< pass_clang :: simplify-comma-expr >===
===< pass_clang :: simplify-dependent-typedef >===
===< pass_clang :: replace-simple-typedef >===
===< pass_clang :: replace-dependent-typedef >===
===< pass_clang :: replace-one-level-typedef-type >===
===< pass_clang :: remove-unused-field >===
===< pass_clang :: instantiate-template-type-param-to-int >===
===< pass_clang :: instantiate-template-param >===
===< pass_clang :: template-arg-to-int >===
===< pass_clang :: template-non-type-arg-to-int >===
===< pass_clang :: reduce-class-template-param >===
===< pass_clang :: remove-trivial-base-template >===
===< pass_clang :: class-template-to-class >===
===< pass_clang :: remove-base-class >===
===< pass_clang :: replace-derived-class >===
===< pass_clang :: remove-unresolved-base >===
===< pass_clang :: remove-ctor-initializer >===
===< pass_clang :: replace-class-with-base-template-spec >===
===< pass_clang :: simplify-nested-class >===
===< pass_clang :: remove-unused-outer-class >===
===< pass_clang :: empty-struct-to-int >===
===< pass_clang :: remove-pointer >===
===< pass_clang :: reduce-pointer-pairs >===
===< pass_clang :: remove-array >===
===< pass_clang :: remove-addr-taken >===
===< pass_clang :: simplify-struct >===
===< pass_clang :: replace-undefined-function >===
===< pass_clang :: replace-array-index-var >===
===< pass_clang :: replace-array-access-with-index >===
===< pass_clang :: replace-dependent-name >===
===< pass_clang :: simplify-recursive-template-instantiation >===
===< pass_clang :: vector-to-array >===
===< pass_lines :: 0 >===
(99.6 %, 70 bytes)
(99.6 %, 69 bytes)
===< pass_lines :: 1 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_lines :: 2 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_lines :: 3 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_lines :: 4 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_lines :: 6 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_lines :: 8 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_lines :: 10 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_unifdef :: 0 >===
===< pass_comments :: 0 >===
===< pass_special :: b >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_special :: c >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_indent :: regular >===
(99.6 %, 68 bytes)
===< pass_balanced :: parens-to-zero >===
===< pass_clex :: rm-toks-1 >===
(99.6 %, 61 bytes)
===< pass_clex :: rm-toks-2 >===
===< pass_clex :: rm-toks-3 >===
===< pass_clex :: rm-toks-4 >===
===< pass_clex :: rm-toks-5 >===
===< pass_clex :: rm-toks-6 >===
===< pass_clex :: rm-toks-7 >===
===< pass_clex :: rm-toks-8 >===
===< pass_clex :: rm-toks-9 >===
===< pass_clex :: rm-toks-10 >===
===< pass_clex :: rm-toks-11 >===
===< pass_clex :: rm-toks-12 >===
===< pass_clex :: rm-toks-13 >===
===< pass_clex :: rm-toks-14 >===
===< pass_clex :: rm-toks-15 >===
===< pass_clex :: rm-toks-16 >===
===< pass_clex :: rm-tok-pattern-4 >===
===< pass_clang :: local-to-global >===
===< pass_peep :: a >===
===< pass_peep :: c >===
===< pass_ints :: a >===
===< pass_ints :: b >===
===< pass_ints :: c >===
(99.6 %, 59 bytes)
===< pass_ints :: d >===
===< pass_ints :: e >===
===< pass_balanced :: parens-only >===
===< pass_clex :: rename-toks >===
(99.7 %, 55 bytes)
===< pass_clex :: delete-string >===
===< pass_clex :: define >===
Termination check: size was 16061; now 55
===< pass_include_includes :: 0 >===
===< pass_ternary :: b >===
===< pass_ternary :: c >===
===< pass_balanced :: curly >===
===< pass_balanced :: curly2 >===
===< pass_balanced :: curly3 >===
===< pass_balanced :: parens >===
===< pass_balanced :: angles >===
===< pass_balanced :: square >===
===< pass_balanced :: curly-inside >===
===< pass_balanced :: parens-inside >===
===< pass_balanced :: angles-inside >===
===< pass_balanced :: square-inside >===
===< pass_balanced :: curly-only >===
===< pass_balanced :: angles-only >===
===< pass_balanced :: square-only >===
===< pass_clang :: remove-namespace >===
===< pass_clang :: aggregate-to-scalar >===
===< pass_clang :: param-to-global >===
===< pass_clang :: param-to-local >===
===< pass_clang :: remove-nested-function >===
===< pass_clang :: union-to-struct >===
===< pass_clang :: return-void >===
===< pass_clang :: simple-inliner >===
===< pass_clang :: reduce-pointer-level >===
===< pass_clang :: lift-assignment-expr >===
===< pass_clang :: copy-propagation >===
===< pass_clang :: callexpr-to-value >===
===< pass_clang :: replace-callexpr >===
===< pass_clang :: simplify-callexpr >===
===< pass_clang :: remove-unused-function >===
===< pass_clang :: remove-unused-enum-member >===
===< pass_clang :: remove-enum-member-value >===
===< pass_clang_binsrch :: remove-unused-var >===
===< pass_clang :: simplify-if >===
===< pass_clang :: reduce-array-dim >===
===< pass_clang :: reduce-array-size >===
===< pass_clang :: move-function-body >===
===< pass_clang :: simplify-comma-expr >===
===< pass_clang :: simplify-dependent-typedef >===
===< pass_clang :: replace-simple-typedef >===
===< pass_clang :: replace-dependent-typedef >===
===< pass_clang :: replace-one-level-typedef-type >===
===< pass_clang :: remove-unused-field >===
===< pass_clang :: instantiate-template-type-param-to-int >===
===< pass_clang :: instantiate-template-param >===
===< pass_clang :: template-arg-to-int >===
===< pass_clang :: template-non-type-arg-to-int >===
===< pass_clang :: reduce-class-template-param >===
===< pass_clang :: remove-trivial-base-template >===
===< pass_clang :: class-template-to-class >===
===< pass_clang :: remove-base-class >===
===< pass_clang :: replace-derived-class >===
===< pass_clang :: remove-unresolved-base >===
===< pass_clang :: remove-ctor-initializer >===
===< pass_clang :: replace-class-with-base-template-spec >===
===< pass_clang :: simplify-nested-class >===
===< pass_clang :: remove-unused-outer-class >===
===< pass_clang :: empty-struct-to-int >===
===< pass_clang :: remove-pointer >===
===< pass_clang :: reduce-pointer-pairs >===
===< pass_clang :: remove-array >===
===< pass_clang :: remove-addr-taken >===
===< pass_clang :: simplify-struct >===
===< pass_clang :: replace-undefined-function >===
===< pass_clang :: replace-array-index-var >===
===< pass_clang :: replace-array-access-with-index >===
===< pass_clang :: replace-dependent-name >===
===< pass_clang :: simplify-recursive-template-instantiation >===
===< pass_clang :: vector-to-array >===
===< pass_lines :: 0 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 1 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 2 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 3 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 4 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 6 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 8 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_lines :: 10 >===
(99.7 %, 56 bytes)
(99.7 %, 55 bytes)
===< pass_unifdef :: 0 >===
===< pass_comments :: 0 >===
===< pass_special :: b >===
===< pass_special :: c >===
===< pass_indent :: regular >===
===< pass_balanced :: parens-to-zero >===
===< pass_clex :: rm-toks-1 >===
===< pass_clex :: rm-toks-2 >===
===< pass_clex :: rm-toks-3 >===
===< pass_clex :: rm-toks-4 >===
===< pass_clex :: rm-toks-5 >===
===< pass_clex :: rm-toks-6 >===
===< pass_clex :: rm-toks-7 >===
===< pass_clex :: rm-toks-8 >===
===< pass_clex :: rm-toks-9 >===
===< pass_clex :: rm-toks-10 >===
===< pass_clex :: rm-toks-11 >===
===< pass_clex :: rm-toks-12 >===
===< pass_clex :: rm-toks-13 >===
===< pass_clex :: rm-toks-14 >===
===< pass_clex :: rm-toks-15 >===
===< pass_clex :: rm-toks-16 >===
===< pass_clex :: rm-tok-pattern-4 >===
===< pass_clang :: local-to-global >===
===< pass_peep :: a >===
===< pass_peep :: c >===
===< pass_ints :: a >===
===< pass_ints :: b >===
===< pass_ints :: c >===
===< pass_ints :: d >===
===< pass_ints :: e >===
===< pass_balanced :: parens-only >===
===< pass_clex :: rename-toks >===
===< pass_clex :: delete-string >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clex :: define >===
(cache hit for /tmp/input-uij7lxep.h)
Termination check: size was 55; now 55
===< pass_clang :: rename-fun >===
===< pass_clang :: rename-param >===
===< pass_clang :: rename-var >===
===< pass_clang :: rename-class >===
===< pass_clang :: rename-cxx-method >===
===< pass_clang :: combine-global-var >===
===< pass_clang :: combine-local-var >===
===< pass_clang :: simplify-struct-union-decl >===
===< pass_clang :: move-global-var >===
===< pass_clang :: unify-function-decl >===
===< pass_lines :: 0 >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clex :: rename-toks >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_clex :: delete-string >===
(cache hit for /tmp/input-uij7lxep.h)
===< pass_indent :: final >===
===================== done ====================
pass statistics:
method pass_ints :: c worked 1 times and failed 0 times
method pass_clex :: rm-toks-1 worked 1 times and failed 16 times
method pass_blank :: 0 worked 1 times and failed 1 times
method pass_indent :: regular worked 1 times and failed 0 times
method pass_clang_binsrch :: remove-unused-function worked 1 times and failed 0 times
method pass_clang_binsrch :: replace-function-def-with-decl worked 1 times and failed 0 times
method pass_clex :: rename-toks worked 1 times and failed 4 times
method pass_comments :: 0 worked 1 times and failed 0 times
method pass_lines :: 6 worked 4 times and failed 10 times
method pass_lines :: 10 worked 4 times and failed 10 times
method pass_lines :: 1 worked 4 times and failed 10 times
method pass_lines :: 2 worked 4 times and failed 10 times
method pass_lines :: 8 worked 4 times and failed 10 times
method pass_lines :: 4 worked 4 times and failed 10 times
method pass_lines :: 3 worked 4 times and failed 10 times
method pass_lines :: 0 worked 12 times and failed 27 times
******** /tmp/input-uij7lxep.h ********
#include "csmith.h"
uint32_t a = 18446744073709551611;
`creduce` reduced the failing test case to:
-------------------- /tmp/input-uij7lxep.h --------------------
#include "csmith.h"
uint32_t a = 18446744073709551611;
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! File this issue at https://github.com/rust-lang-nursery/rust-bindgen/issues/new !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
--------------- 8< --------------- 8< --------------- 8< ---------------
This bug was found with `csmith` and `driver.py`.
### Input Header
```c
#include "csmith.h"
uint32_t a = 18446744073709551611;
```
### `bindgen` Invocation
```
$ './predicate.py' '--bindgen-args' '--with-derive-partialeq --with-derive-eq --with-derive-partialord --with-derive-ord --with-derive-hash --with-derive-default -- -I/home/fitzgen/rust-bindgen/csmith-fuzzing' '/tmp/input-uij7lxep.h'
```
### Actual Results
<details>
```
Running: ['cargo', 'run', '--manifest-path', '/home/fitzgen/rust-bindgen/Cargo.toml', '--', '/tmp/input-uij7lxep.h', '-o', '/tmp/bindings-vyl0qlte.rs', '--with-derive-partialeq', '--with-derive-eq', '--with-derive-partialord', '--with-derive-ord', '--with-derive-hash', '--with-derive-default', '--', '-I/home/fitzgen/rust-bindgen/csmith-fuzzing']
Running: ['rustc', '--crate-type', 'lib', '--test', '-o', '/tmp/layout-tests-41kuqr8x', '/tmp/bindings-vyl0qlte.rs']
Error: running `rustc` on the emitted bindings failed
+error[E0600]: cannot apply unary operator `-` to type `u32`
+ --> /tmp/bindings-vyl0qlte.rs:27:333
+ |
+27 | } pub const g_79 : :: std :: os :: raw :: c_ushort = 1 ; pub const g_83 : :: std :: os :: raw :: c_schar = -50 ; pub const g_86 : :: std :: os :: raw :: c_int = -417508947 ; pub const g_93 : :: std :: os :: raw :: c_int = -9 ; pub const g_122 : :: std :: os :: raw :: c_short = 1 ; pub const g_124 : :: std :: os :: raw :: c_uint = -5 ; extern "C" {
+ | ^^
+
+error: aborting due to previous error
+
```
</details>
### Expected Results
`bindgen` emits bindings OK, then `rustc` compiles those bindings OK, then the
compiled bindings' layout tests pass OK.
--------------- 8< --------------- 8< --------------- 8< ---------------
<3 <3 <3 Thank you! <3 <3 <3
</code></pre></details>
Diffstat (limited to 'src/codegen/impl_debug.rs')
0 files changed, 0 insertions, 0 deletions