1// RUN: %clang_cc1 -triple i386-apple-darwin9 -verify %s
2// <rdar://problem/12415959>
3
4typedef unsigned int u_int32_t;
5typedef u_int32_t uint32_t;
6
7typedef unsigned long long u_int64_t;
8typedef u_int64_t uint64_t;
9
10int 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