1060ddb0173ba91cd400f073ed0bd1f9b9c3a4d50Nuno Lopes// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm -o - %s | FileCheck %s 2f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor 3f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregornamespace PR11418 { 4f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor struct NonPOD { 5f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor NonPOD(); 6f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor NonPOD(const NonPOD &); 7f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor NonPOD(NonPOD &&); 8f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor }; 9f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor 10f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor struct X { 11f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor NonPOD np; 12f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor int a = 17; 13f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor }; 14f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor 15f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor void check_copy(X x) { 16f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor X x2(x); 17f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor } 18f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor 19f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor void check_move(X x) { 20f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor X x3(static_cast<X&&>(x)); 21f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor } 22f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor 23f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: define linkonce_odr void @_ZN7PR114181XC2EOS0_ 24f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 25f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: call void @_ZN7PR114186NonPODC1EOS0_ 26f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 27f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: load i32* 28f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 29f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: store i32 30f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 31f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: ret 32f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor 33f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: define linkonce_odr void @_ZN7PR114181XC2ERKS0_ 34f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 35f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: call void @_ZN7PR114186NonPODC1ERKS0_ 36f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 37f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: load i32* 38f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 39f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: store i32 40f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK-NOT: 17 41f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor // CHECK: ret 42f48538897ccd6726e87485267495a62fdfd0b369Douglas Gregor} 43