HomePhabricator

[analyzer] Don't attempt to devirtualize calls to base class destructors.

Authored by jordan_rose on Sep 6 2012, 1:37 PM.

Description

[analyzer] Don't attempt to devirtualize calls to base class destructors.

CXXDestructorCall now has a flag for when it is a base destructor call.
Other kinds of destructor calls (locals, fields, temporaries, and 'delete')
all behave as "whole-object" destructors and do not behave differently
from one another (specifically, in these cases we /should/ try to
devirtualize a call to a virtual destructor).

This was causing crashes in both our internal buildbot, the crash still
being tracked in PR13765, and some of the crashes being tracked in PR13763,
due to a assertion failure. (The behavior under -Asserts happened to be
correct anyway.)

Adding this knowledge also allows our DynamicTypePropagation checker to do
a bit less work; the special rules about virtual method calls during a
destructor only require extra handling during base destructors.

llvm-svn: 163348

Details

Committed
jordan_roseSep 6 2012, 1:37 PM
Parents
rGdc1e35d41856: The Mips standalone assembler memory instruction support.
Branches
Unknown
Tags
Unknown