// RUN: %clang_cc1 -emit-llvm -o -  %s -fpascal-strings -fwchar-type=short -fno-signed-wchar | FileCheck %s
// rdar://8020384

#include <stddef.h>

extern void abort (void);

typedef unsigned short UInt16;

typedef UInt16 UniChar;

int main(int argc, char* argv[])
{

        char st[] = "\pfoo";            // pascal string
        UniChar wt[] = L"\pbar";        // pascal Unicode string
	UniChar wt1[] = L"\p";
	UniChar wt2[] = L"\pgorf";

        if (st[0] != 3)
          abort ();
        if (wt[0] != 3)
          abort ();
        if (wt1[0] != 0)
          abort ();
        if (wt2[0] != 4)
          abort ();
        
        return 0;
}

// CHECK: [i16 3, i16 98, i16 97, i16 114, i16 0]
// CHECK: [i16 4, i16 103, i16 111, i16 114, i16 102, i16 0]


// PR8856 - -fshort-wchar makes wchar_t be unsigned.
// CHECK: @test2
// CHECK: store volatile i32 1, i32* %isUnsigned
void test2() {
  volatile int isUnsigned = (wchar_t)-1 > (wchar_t)0;
}
