[LLVMbugs] [Bug 13701] New: Boxing untyped enum produces different number size

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Aug 26 01:32:35 PDT 2012


             Bug #: 13701
           Summary: Boxing untyped enum produces different number size
           Product: clang
           Version: 3.1
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: news at 1986.tv
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Here is a sample code I used to reproduce the issue:

typedef enum _MyEnum {
    MyEnumMember1 = 1000
} MyEnum;

- (void)testEnumerationBoxing
    NSNumber *numberA = [self testA];
    NSNumber *numberB = [self testB:MyEnumMember1];

    CFNumberType numberTypeA = CFNumberGetType((__bridge CFNumberRef) numberA);
    CFNumberType numberTypeB = CFNumberGetType((__bridge CFNumberRef) numberB);

- (NSNumber *)testA
    return @(MyEnumMember1);

- (NSNumber *)testB:(MyEnum)enumMember
    return @(enumMember);

Expected result:
numberTypeA should be the same as numberTypeB

Actual result:
numberTypeA is reported to be a 32 bit number while numberTypeB is a 64 bit

When enum defined as "typedef enum _MyEnum : int" both results are the same

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list