Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Rework our handling of key functions. We used to track a complete list of all | Richard Smith | 2015-02-28 | 1 | -3/+3 |
| | | | | | | | | | | | | | | dynamic classes in the translation unit and check whether each one's key function is defined when we got to the end of the TU (and when we got to the end of each module). This is really terrible for modules performance, since it causes unnecessary deserialization of every dynamic class in every compilation. We now use a much simpler (and, in a modules build, vastly more efficient) system: when we see an out-of-line definition of a virtual function, we check whether that function was in fact its class's key function. (If so, we need to emit the vtable.) llvm-svn: 230830 | ||||
* | Flesh out test for defaulted key functions a bit more. | Benjamin Kramer | 2012-08-03 | 1 | -3/+30 |
| | | | | llvm-svn: 161243 | ||||
* | Fix failed to generate vtables in certain cases. | Benjamin Kramer | 2012-08-03 | 1 | -0/+11 |
By C++ standard, the vtable should be generated if the first non-inline virtual function is defined in the TU. Current version of clang doesn't generate vtable if the first virtual function is defaulted, because the key function is regarded as the defaulted function. Patch by Li Kan! llvm-svn: 161236 |