1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -std=c++11 -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s
2575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregor
3575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregor// PR9923
4575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregorenum class Color { red, blue, green };
5575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregor
6575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregorvoid f(Color);
7575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregorvoid g() {
8575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregor  f(Color::red);
9575a1c9dc8dc5b4977194993e289f9eda7295c39Douglas Gregor}
1059d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantl
1159d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantl// See that struct is handled equally.
1259d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantlenum struct Colour { grey };
1359d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantl
1459d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantlvoid h(Colour);
1559d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantlvoid i() {
1659d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantl  h(Colour::grey);
1759d6a71d681adfdc7d976492eeb3deae84e8f2e2Adrian Prantl}
18e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smith
19e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smithenum struct PR17103 : int { a = -1, b = 1 };
20e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smithbool cmp(PR17103 x, PR17103 y) { return x < y; }
21e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smith
22e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smith// CHECK-LABEL: @_Z3cmp7PR17103S_(
23e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smith// CHECK-NOT: }
24e7eb0c4f6e728bb62c7d7304949b8a697153ba90Richard Smith// CHECK: icmp slt
25