Skip to content

Narrowing with bottom does not produce bottom #1540

@Red-Panda64

Description

@Red-Panda64

Below is a slightly reformatted (removed indentation and added line breaks to make this more readable) traced message which shows an
a value being narrowed with bot and remaining unchanged.

%%% narrow: narrow HConsed lifted PathSensitive (ProjectiveSet (MCP.D * map)):PathSensitive (ProjectiveSet (MCP.D * map)):{(MCP.D:[expRelation:(),
mallocWrapper:(wrapper call:Unknown node, unique calls:{}),
base:({
Parameter {
i ->   (Unknown int([-31,31]),[0,2147483647])
}
}, {}, {}, (P:{}, Protected Changes:{
})),
threadid:(wrapper call:varinfo * node * chain option:(varinfo:f, node:node 21 "pthread_create((pthread_t * __restrict  )(& id), (pthread_attr_t const   * __restrict  )((void *)0), & f, (void * __restrict  )((void *)0));", chain option:no index), Thread:[main, f@tests/regression/95-dividedsides/19-dead-side-effect3.c:26:3-26:36], created:(current function:bot, callees:bot)),
threadflag:Multithreaded (other),
threadreturn:False,
escape:{},
mutexEvents:(),
access:(),
mutex:(lockset:{}, multiplicity:{}),
race:(),
mhp:(),
assert:()], map:{})}

with bot to

HConsed lifted PathSensitive (ProjectiveSet (MCP.D * map)):PathSensitive (ProjectiveSet (MCP.D * map)):{(MCP.D:[expRelation:(),
mallocWrapper:(wrapper call:Unknown node, unique calls:{}),
base:({
Parameter {
i ->   (Unknown int([-31,31]),[0,2147483647])
}
}, {}, {}, (P:{}, Protected Changes:{
})),
threadid:(wrapper call:varinfo * node * chain option:(varinfo:f, node:node 21 "pthread_create((pthread_t * __restrict  )(& id), (pthread_attr_t const   * __restrict  )((void *)0), & f, (void * __restrict  )((void *)0));", chain option:no index), Thread:[main, f@tests/regression/95-dividedsides/19-dead-side-effect3.c:26:3-26:36], created:(current function:bot, callees:bot)),
threadflag:Multithreaded (other),
threadreturn:False,
escape:{},
mutexEvents:(),
access:(),
mutex:(lockset:{}, multiplicity:{}),
race:(),
mhp:(),
assert:()], map:{})}

There are some domains (e.g. DefExc) that do not narrow to bottom. The interval should be narrowed to bottom, however. It seems this is prevented by some lifter further up.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions