aboutsummaryrefslogtreecommitdiffstats
path: root/test/ExecutionEngine
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2007-12-10 17:43:13 +0000
committerDuncan Sands <baldrick@free.fr>2007-12-10 17:43:13 +0000
commit7feee8f380a8d811a6a343682fa1d2baa121a6d9 (patch)
tree6ea58d5ba05a4007f3278611d3c90be7c39f8ab5 /test/ExecutionEngine
parenta264a91e3833542b5b2948a498b4e311b4f35ad5 (diff)
downloadexternal_llvm-7feee8f380a8d811a6a343682fa1d2baa121a6d9.zip
external_llvm-7feee8f380a8d811a6a343682fa1d2baa121a6d9.tar.gz
external_llvm-7feee8f380a8d811a6a343682fa1d2baa121a6d9.tar.bz2
Fix PR1836: in the interpreter, read and write apints
using the minimum possible number of bytes. For little endian targets run on little endian machines, apints are stored in memory from LSB to MSB as before. For big endian targets on big endian machines they are stored from MSB to LSB which wasn't always the case before (if the target and host endianness doesn't match values are stored according to the host's endianness). Doing this requires knowing the endianness of the host, which is determined when configuring - thanks go to Anton for this. Only having access to little endian machines I was unable to properly test the big endian part, which is also the most complicated... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44796 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/ExecutionEngine')
-rw-r--r--test/ExecutionEngine/2007-12-10-APIntLoadStore.ll19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/ExecutionEngine/2007-12-10-APIntLoadStore.ll b/test/ExecutionEngine/2007-12-10-APIntLoadStore.ll
new file mode 100644
index 0000000..7a337f9
--- /dev/null
+++ b/test/ExecutionEngine/2007-12-10-APIntLoadStore.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s -o - | lli -force-interpreter
+; PR1836
+
+define i32 @main() {
+entry:
+ %retval = alloca i32 ; <i32*> [#uses=2]
+ %tmp = alloca i32 ; <i32*> [#uses=2]
+ %x = alloca i75, align 16 ; <i75*> [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
+ store i75 999, i75* %x, align 16
+ store i32 0, i32* %tmp, align 4
+ %tmp1 = load i32* %tmp, align 4 ; <i32> [#uses=1]
+ store i32 %tmp1, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval2 = load i32* %retval ; <i32> [#uses=1]
+ ret i32 %retval2
+}