[cfe-commits] r151403 - in /cfe/trunk: lib/CodeGen/CodeGenTypes.cpp test/CodeGenCXX/forward-enum.cpp
Douglas Gregor
dgregor at apple.com
Fri Feb 24 16:11:27 PST 2012
On Feb 24, 2012, at 3:02 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Fri, Feb 24, 2012 at 2:40 PM, Douglas Gregor <dgregor at apple.com> wrote:
>> Author: dgregor
>> Date: Fri Feb 24 16:40:36 2012
>> New Revision: 151403
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=151403&view=rev
>> Log:
>> For the purposes of building LLVM types, a forward-declared
>> enumeration type with a fixed underlying type is complete. Fixes
>> <rdar://problem/10916155>.
>>
>> Added:
>> cfe/trunk/test/CodeGenCXX/forward-enum.cpp
>> Modified:
>> cfe/trunk/lib/CodeGen/CodeGenTypes.cpp
>>
>> Modified: cfe/trunk/lib/CodeGen/CodeGenTypes.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypes.cpp?rev=151403&r1=151402&r2=151403&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CodeGenTypes.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CodeGenTypes.cpp Fri Feb 24 16:40:36 2012
>> @@ -199,8 +199,13 @@
>>
>> // If it's a tagged type used by-value, but is just a forward decl, we can't
>> // convert it. Note that getDefinition()==0 is not the same as !isDefinition.
>> - if (TT->getDecl()->getDefinition() == 0)
>> + // The exception is an enumeration type with a fixed underlying type; these
>> + // can be converted even if they are forward declarations.
>> + if (TT->getDecl()->getDefinition() == 0 &&
>> + !(isa<EnumDecl>(TT->getDecl()) &&
>> + cast<EnumDecl>(TT->getDecl())->isFixed())) {
>> return false;
>> + }
>
> It might be a bit more readable to use TT->isIncompleteType() here.
Good point. r151412.
- Doug
More information about the cfe-commits
mailing list