[llvm-commits] [llvm] r64693 - in /llvm/trunk: lib/Transforms/Scalar/InstructionCombining.cpp test/Transforms/InstCombine/enforce-known-alignment.ll

Dan Gohman gohman at apple.com
Mon Feb 16 15:02:21 PST 2009


Author: djg
Date: Mon Feb 16 17:02:21 2009
New Revision: 64693

URL: http://llvm.org/viewvc/llvm-project?rev=64693&view=rev
Log:
Fix EnforceKnownAlignment so that it doesn't ever reduce the alignment
of an alloca or global variable.

Added:
    llvm/trunk/test/Transforms/InstCombine/enforce-known-alignment.ll
Modified:
    llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=64693&r1=64692&r2=64693&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Mon Feb 16 17:02:21 2009
@@ -9237,15 +9237,23 @@
     // If there is a large requested alignment and we can, bump up the alignment
     // of the global.
     if (!GV->isDeclaration()) {
-      GV->setAlignment(PrefAlign);
-      Align = PrefAlign;
+      if (GV->getAlignment() >= PrefAlign)
+        Align = GV->getAlignment();
+      else {
+        GV->setAlignment(PrefAlign);
+        Align = PrefAlign;
+      }
     }
   } else if (AllocationInst *AI = dyn_cast<AllocationInst>(V)) {
     // If there is a requested alignment and if this is an alloca, round up.  We
     // don't do this for malloc, because some systems can't respect the request.
     if (isa<AllocaInst>(AI)) {
-      AI->setAlignment(PrefAlign);
-      Align = PrefAlign;
+      if (AI->getAlignment() >= PrefAlign)
+        Align = AI->getAlignment();
+      else {
+        AI->setAlignment(PrefAlign);
+        Align = PrefAlign;
+      }
     }
   }
 

Added: llvm/trunk/test/Transforms/InstCombine/enforce-known-alignment.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/enforce-known-alignment.ll?rev=64693&view=auto

==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/enforce-known-alignment.ll (added)
+++ llvm/trunk/test/Transforms/InstCombine/enforce-known-alignment.ll Mon Feb 16 17:02:21 2009
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep alloca | grep {align 16}
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
+target triple = "i386-apple-darwin9.6"
+
+define void @foo(<{ { [4 x i32] }, i32, i32, i32, i8, i8, i8, i8, i8, [3 x i8], { i8, i8, i8, i8, [4 x i32], [4 x i32], [4 x i32], i8, i8, i8, i8, i8, i8 }*, <{ i8, i8, i8, i8, i8, i8, [2 x i8], i32, [4 x i8], <{ [16 x { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } }], i8, [15 x i8] }>, { i8, i8, [16 x i8], [4 x i8], [16 x i8], [4 x i8] }, [2 x i8], i32, i32, i32, i32, i32, i32, i32, i32, [2 x [16 x [3 x i32]]], [2 x [16 x [3 x i32]]], [2 x [16 x [16 x [3 x i32]]]], [1 x i32] }>*, <{ <{ { [16 x i16] }, { [256 x i16] } }>, <{ { [64 x i16] }, { [64 x i16] }, { [8 x i16] } }> }>*, i8*, { [2 x { { i32 } }], [2 x i8], i8, [2 x i32], i32, i32, i32 }*, { [2 x { { i32 } }], [2 x i8], i8, [2 x i32], i32, i32, i32 }*, { [2 x { { i32 } }], [2 x i8], i8, [2 x i32], i32, i32, i32 }*, i32, i32, i32, i32, i32, i32, { [34 x <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*]!
 , [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i3!
 2, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i!
 8*, i32,
 i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>*], [34 x <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i3!
 2, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, !
 i32, i8*, i32, i32, i32, i32, i16*, i16, i16, i16, i16, float,!
  i8*, i3
2*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>*], [34 x i32], [34 x i32], [2 x i32], [2 x i32], <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32!
 , i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, i!
 32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32,!
  i32, i8
 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>* }*, i32**, opaque*, [5 x <{ i32, [7 x i32], <{ { [16 x i8] } }>, <{ { [16 x i8] } }>, i8, [15 x i8], <{ { [16 x i8] }, [4 x i8], [4 x i8], [2 x i32] }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, { i8, i8, i8, i8, i8, i8, i8, [16 x i8], i8, i8, i64, [2 x [16 x [!
 2 x i16]]], [2 x [16 x i8]], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, i32 }, [16 x i32] }>*], <{ i32, [7 x i32], <{ { [16 x i8] } }>, <{ { [16 x i8] } }>, i8, [15 x i8], <{ { [16 x i8] }, [4 x i8], [4 x i8], [2 x i32] }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, { i8, i8, i8, i8, i8, i8, i8, [16 x i8], i8, i8, i64, [2 x [16 x [2 x i16]]], [2 x [16 x i8]], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, i32 }, [16 x i32] }>*, i8, i8, i8, i8, i8, [3 x i8], i8*, i8*, i8*, <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [!
 21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <{ { !
 { [2 x {
 { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i!
 16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>*, [2 x <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <!
 { { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 }!
  } }>*, 
<{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, {!
  i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>**], [2 x i32], [2 x i32], [33 x i8]*, [41 x i8]*, <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <{ { { [2 x { { !
 i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { !
 [2 x { {
 i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i32, i32, i32,!
  double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>*, { <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, i32, i32, i32, i32, i32*, { { i32, i32 }, i8, i8, i8, i8, [17 x <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32],!
  [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{ { <{ !
 { { [2 x
 { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32,!
  i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>*], [17 x <{ i8, i8, i8, i8, i8, [3 x i8], i8*, i32, opaque*, opaque*, i32, opaque*, opaque*, [12 x i8], <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>, <{!
  { <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, !
 i8 } } }
>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* }**, i32, i32, [4 x i8], <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>**, [3 x i32] }>, { i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, \3, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, { i8 } }, i32, { i16, i16, i32, i32, i32*, i32*, i32, i32, i32*, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i16*, i16, i16, i16, i16, float, i8*, i32*, i32, i32, i8 }, { i32, i32, { i32, i32, i32, i32, [16 x { i32, { { i16 } }, i32, i32, [2 x { { i32 } }], [2 x i8], i16 }] }*, i32, i32, i32, i32, i32 }, { i32, i32, i32, { [2 x i8], [2 x { { i32 } }], i8, [3 x { i32, i16, i16 }] }*, { i8, i8, i8, i8, i8, i8, i8, i8, i8, i!
 8, { i32, i32, i32, double }, { i32, i32, i32, double } }*, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }, { i32, float, i8, i8 }, { i8, i8, i32, i8, i8, float }, { i32, i32, i32, i32, { i32, i32, i32, [5 x i32], [3 x i32], [4 x i32], [3 x i32] }, { i32, i32, i32, i32, [5 x i32], [3 x i32], [4 x [4 x i32]], [4 x i32], i32, { { i32 } }, { { i32 } } } }, { i8, i8, i32, double, i8, float, i8, float, i8, i8, i8, i8, i8 }, [1 x i32] }>*] }*, i32, opaque*, i16*, <{ i8, i8, i8, i8, i8, i8, i8, i8, i8*, i8*, i32, [4 x i8*], [4 x i8*], [2 x [4 x i32]], [2 x [4 x i32]], { i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i8*, i8, i8, i32, i8* }, opaque*, [16 x i16], [16 x i16], [12 x i8], { [4 x i32] }, { [4 x i32] }, { [21 x i32], [21 x i32], [4 x [21 x i32]] }, <{ i16 }>*, i32* }>*, i8*, i8*, i8*, i8*, i8*, { [16 x i8], [16 x i8] }*, opaque*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i!
 8 }*, double, [16 x { i32, i32, i32, { i16* }, { [1 x i16*], [!
 2 x i16*
], [2 x i16*], [4 x i16*], [8 x i16*], [8 x i16*], [16 x i16*] }, i32, [64 x { { { i32 } }, i8 }], { i16* }, [64 x { [1 x i16*], [2 x i16*], [2 x i16*], [4 x i16*], [8 x i16*], [8 x i16*], [16 x i16*] }], { i16* }, { i16* }, i32, [20 x { { i8, { { i16 } }, { { i32 } } }, i32, { { i32 } } }] }], [16 x { i32, i32, i32, { i16* }, { [1 x i16*], [2 x i16*], [2 x i16*], [4 x i16*], [8 x i16*], [8 x i16*], [16 x i16*] }, i32, [64 x { { { i32 } }, i8 }], { i16* }, [64 x { [1 x i16*], [2 x i16*], [2 x i16*], [4 x i16*], [8 x i16*], [8 x i16*], [16 x i16*] }], { i16* }, { i16* }, i32, [20 x { { i8, { { i16 } }, { { i32 } } }, i32, { { i32 } } }] }], { i8* }, { i8* }, i8, i8, [6 x [16 x i8]], [2 x [64 x i8]], [6 x [16 x i8]], [2 x [64 x i8]], [2 x i8], { i8* }, { i8* }, <{ i8, [15 x i8], [4 x <{ [16 x i8], <{ i8 }>, [3 x i8], i32, i32, [4 x i8], { [256 x i8] }, { [256 x i16] }, { [256 x i16] }, <{ <{ { [16 x i16] }, { [256 x i16] } }>, <{ { [64 x i16] }, { [64 x i16] }, { [8 x i16] } }!
 > }> }>] }>*, <{ i8, [15 x i8], [2 x <{ i8, <{ i8 }>, i8, i8, i32, i32, [4 x i8], { [128 x i8] }, { [128 x i16] }, { [128 x i16] }, <{ { [64 x i16] }, { [64 x i16] }, { [8 x i16] } }> }>] }>*, { i32, i32, i32, double }, { i32, i32, i32, double }, <{ [16 x i8], <{ i8 }>, [3 x i8], i32, i32, [4 x i8], { [256 x i8] }, { [256 x i16] }, { [256 x i16] }, <{ <{ { [16 x i16] }, { [256 x i16] } }>, <{ { [64 x i16] }, { [64 x i16] }, { [8 x i16] } }> }> }>*, <{ i8, <{ i8 }>, i8, i8, i32, i32, [4 x i8], { [128 x i8] }, { [128 x i16] }, { [128 x i16] }, <{ { [64 x i16] }, { [64 x i16] }, { [8 x i16] } }> }>*, <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*, i32, i32, i32, i32, i32, i32, i32 }>*) {
+	%2 = alloca [3 x <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>], align 16		; <[3 x <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>]*> [#uses=1]
+	%3 = getelementptr [3 x <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>]* %2, i32 0, i32 0		; <<{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>*> [#uses=1]
+	%4 = getelementptr <{ { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } } }>* %3, i32 0, i32 0		; <{ { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } }*> [#uses=1]
+	%5 = getelementptr { { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 } }* %4, i32 0, i32 0		; <{ [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 }*> [#uses=1]
+	%6 = bitcast { [2 x { { i32 } }], [2 x i8], { i16 }, [2 x i8], i8, i8 }* %5 to { [8 x i16] }*		; <{ [8 x i16] }*> [#uses=1]
+	%7 = getelementptr { [8 x i16] }* %6, i32 0, i32 0		; <[8 x i16]*> [#uses=1]
+	%8 = getelementptr [8 x i16]* %7, i32 0, i32 0		; <i16*> [#uses=1]
+	store i16 0, i16* %8, align 16
+        call void @bar(i16* %8)
+	ret void
+}
+
+declare void @bar(i16*)





More information about the llvm-commits mailing list