linkonce_odr_func.ll 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. ; RUN: llvm-as < %s >%t1
  2. ; RUN: llvm-lto -o %t2 -dso-symbol=foo1 -dso-symbol=foo2 -dso-symbol=foo3 \
  3. ; RUN: -dso-symbol=foo4 -dso-symbol=v1 -dso-symbol=v2 %t1 -O0
  4. ; RUN: llvm-nm %t2 | FileCheck %s
  5. target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
  6. target triple = "x86_64-unknown-linux-gnu"
  7. ; CHECK: t foo1
  8. define linkonce_odr void @foo1() noinline {
  9. ret void
  10. }
  11. ; CHECK: W foo2
  12. define linkonce_odr void @foo2() noinline {
  13. ret void
  14. }
  15. ; CHECK: t foo3
  16. define linkonce_odr void @foo3() noinline {
  17. ret void
  18. }
  19. ; CHECK: W foo4
  20. define linkonce_odr void @foo4() noinline {
  21. ret void
  22. }
  23. ; CHECK: r v1
  24. @v1 = linkonce_odr constant i32 32
  25. define i32 @useV1() {
  26. %x = load i32, i32* @v1
  27. ret i32 %x
  28. }
  29. ; CHECK: V v2
  30. @v2 = linkonce_odr global i32 32
  31. define i32 @useV2() {
  32. %x = load i32, i32* @v2
  33. ret i32 %x
  34. }
  35. declare void @f(void()*)
  36. declare void @p()
  37. define void @bar() personality void()* @p {
  38. bb0:
  39. call void @foo1()
  40. call void @f(void()* @foo2)
  41. invoke void @foo3() to label %bb1 unwind label %clean
  42. bb1:
  43. invoke void @f(void()* @foo4) to label %bb2 unwind label %clean
  44. bb2:
  45. ret void
  46. clean:
  47. landingpad {i32, i32} cleanup
  48. ret void
  49. }