/src/test/codegen/repr-transparent-aggregates-3.rs

https://gitlab.com/jianglu/rust · Rust · 49 lines · 20 code · 13 blank · 16 comment · 0 complexity · fcdfe14cc39f69a01377323d537ebe4d MD5 · raw file

  1. // Copyright 2018 The Rust Project Developers. See the COPYRIGHT
  2. // file at the top-level directory of this distribution and at
  3. // http://rust-lang.org/COPYRIGHT.
  4. //
  5. // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
  6. // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
  7. // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
  8. // option. This file may not be copied, modified, or distributed
  9. // except according to those terms.
  10. // compile-flags: -C no-prepopulate-passes
  11. // only-mips64
  12. // See repr-transparent.rs
  13. #![crate_type="lib"]
  14. #![feature(repr_transparent)]
  15. #[repr(C)]
  16. pub struct Big([u32; 16]);
  17. #[repr(transparent)]
  18. pub struct BigW(Big);
  19. // CHECK: define void @test_Big(%Big* [[BIG_RET_ATTRS:.*]], [8 x i64]
  20. #[no_mangle]
  21. pub extern fn test_Big(_: Big) -> Big { loop {} }
  22. // CHECK: define void @test_BigW(%BigW* [[BIG_RET_ATTRS]], [8 x i64]
  23. #[no_mangle]
  24. pub extern fn test_BigW(_: BigW) -> BigW { loop {} }
  25. #[repr(C)]
  26. pub union BigU {
  27. foo: [u32; 16],
  28. }
  29. #[repr(transparent)]
  30. pub struct BigUw(BigU);
  31. // CHECK: define void @test_BigU(%BigU* [[BIGU_RET_ATTRS:.*]], [8 x i64]
  32. #[no_mangle]
  33. pub extern fn test_BigU(_: BigU) -> BigU { loop {} }
  34. // CHECK: define void @test_BigUw(%BigUw* [[BIGU_RET_ATTRS]], [8 x i64]
  35. #[no_mangle]
  36. pub extern fn test_BigUw(_: BigUw) -> BigUw { loop {} }