blob: 3accd9ac0630756385c1807a5e4bc18674c6b2ec [file] [log] [blame]
/* PR tree-optimization/111009 */
/* { dg-do run } */
/* { dg-options "-O3 -fno-strict-overflow" } */
struct dso {
struct dso * next;
int maj;
};
__attribute__((noipa)) static void __dso_id__cmp_(void) {}
__attribute__((noipa))
static int bug(struct dso * d, struct dso *dso)
{
struct dso **p = &d;
struct dso *curr = 0;
while (*p) {
curr = *p;
// prevent null deref below
if (!dso) return 1;
if (dso == curr) return 1;
int *a = &dso->maj;
// null deref
if (!(a && *a)) __dso_id__cmp_();
p = &curr->next;
}
return 0;
}
__attribute__((noipa))
int main(void) {
struct dso d = { 0, 0, };
bug(&d, 0);
}