blob: 473f78ebcae61252f4fb56e6e7dcfe3e72822fdb [file] [log] [blame]
Bill Wendling68fd6082012-11-12 06:42:51 +00001// 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
Bill Wendling984f2782013-03-22 21:33:46 +000010int func1() {
Bill Wendlingba541d32012-11-12 21:13:35 +000011 // Error out if size is > 32-bits.
Bill Wendling68fd6082012-11-12 06:42:51 +000012 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)));
Bill Wendlingba541d32012-11-12 21:13:35 +000019
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.
Bill Wendling68fd6082012-11-12 06:42:51 +000024}