align-external.ll 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ; RUN: opt < %s -instcombine -S | FileCheck %s
  2. ; Don't assume that external global variables or those with weak linkage have
  3. ; their preferred alignment. They may only have the ABI minimum alignment.
  4. target datalayout = "i32:8:32"
  5. @A = external global i32
  6. @B = weak_odr global i32 0
  7. @C = available_externally global <4 x i32> zeroinitializer, align 4
  8. ; CHECK: @C = available_externally global <4 x i32> zeroinitializer, align 4
  9. define i64 @foo(i64 %a) {
  10. %t = ptrtoint i32* @A to i64
  11. %s = shl i64 %a, 3
  12. %r = or i64 %t, %s
  13. %q = add i64 %r, 1
  14. ret i64 %q
  15. }
  16. ; CHECK-LABEL: define i64 @foo(i64 %a)
  17. ; CHECK: %s = shl i64 %a, 3
  18. ; CHECK: %r = or i64 %s, ptrtoint (i32* @A to i64)
  19. ; CHECK: %q = add i64 %r, 1
  20. ; CHECK: ret i64 %q
  21. define i32 @bar() {
  22. %r = load i32, i32* @B, align 1
  23. ret i32 %r
  24. }
  25. ; CHECK-LABEL: @bar()
  26. ; CHECK: align 1
  27. define void @vec_store() {
  28. store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* @C, align 4
  29. ret void
  30. }
  31. ; CHECK: define void @vec_store()
  32. ; CHECK: store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* @C, align 4