unnamed-addr.ll 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. ; RUN: opt -globalopt -S < %s | FileCheck %s
  2. @a = internal global i32 0, align 4
  3. @b = internal global i32 0, align 4
  4. @c = internal global i32 0, align 4
  5. @d = internal constant [4 x i8] c"foo\00", align 1
  6. @e = linkonce_odr global i32 0
  7. ; CHECK: @a = internal global i32 0, align 4
  8. ; CHECK: @b = internal global i32 0, align 4
  9. ; CHECK: @c = internal unnamed_addr global i32 0, align 4
  10. ; CHECK: @d = internal unnamed_addr constant [4 x i8] c"foo\00", align 1
  11. ; CHECK: @e = linkonce_odr global i32 0
  12. define i32 @get_e() {
  13. %t = load i32, i32* @e
  14. ret i32 %t
  15. }
  16. define void @set_e(i32 %x) {
  17. store i32 %x, i32* @e
  18. ret void
  19. }
  20. define i1 @bah(i64 %i) nounwind readonly optsize ssp {
  21. entry:
  22. %arrayidx4 = getelementptr inbounds [4 x i8], [4 x i8]* @d, i64 0, i64 %i
  23. %tmp5 = load i8, i8* %arrayidx4, align 1
  24. %array0 = bitcast [4 x i8]* @d to i8*
  25. %tmp6 = load i8, i8* %array0, align 1
  26. %cmp = icmp eq i8 %tmp5, %tmp6
  27. ret i1 %cmp
  28. }
  29. define void @baz(i32 %x) {
  30. entry:
  31. store i32 %x, i32* @a, align 4
  32. store i32 %x, i32* @b, align 4
  33. store i32 %x, i32* @c, align 4
  34. ret void
  35. }
  36. define i32 @foo(i32* %x) nounwind readnone optsize ssp {
  37. entry:
  38. %cmp = icmp eq i32* %x, @a
  39. %conv = zext i1 %cmp to i32
  40. ret i32 %conv
  41. }
  42. define i32 @bar() {
  43. entry:
  44. switch i64 ptrtoint (i32* @b to i64), label %sw.epilog [
  45. i64 1, label %return
  46. i64 0, label %return
  47. ]
  48. sw.epilog:
  49. ret i32 0
  50. return:
  51. ret i32 1
  52. }
  53. define i32 @zed() {
  54. entry:
  55. %tmp1 = load i32, i32* @c, align 4
  56. ret i32 %tmp1
  57. }