Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 -triple i386-apple-darwin9 -verify %s
      2 // <rdar://problem/12415959>
      3 
      4 typedef unsigned int u_int32_t;
      5 typedef u_int32_t uint32_t;
      6 
      7 typedef unsigned long long u_int64_t;
      8 typedef u_int64_t uint64_t;
      9 
     10 int func1() {
     11   // Error out if size is > 32-bits.
     12   uint32_t msr = 0x8b;
     13   uint64_t val = 0;
     14   __asm__ volatile("wrmsr"
     15                    :
     16                    : "c" (msr),
     17                      "a" ((val & 0xFFFFFFFFUL)), // expected-error {{invalid input size for constraint 'a'}}
     18                      "d" (((val >> 32) & 0xFFFFFFFFUL)));
     19 
     20   // Don't error out if the size of the destination is <= 32 bits.
     21   unsigned char data;
     22   unsigned int port;
     23   __asm__ volatile("outb %0, %w1" : : "a" (data), "Nd" (port)); // No error expected.
     24 }
     25