[llvm-commits] Source register same as write-back base

Joe Abbey jabbey at arxan.com
Tue Apr 12 13:02:12 PDT 2011


> What kind of code is producing this instruction? It seems odd to store
a pointer to itself:
>  *p++ = p;

STL:

#include <vector>
#include <list>

using namespace std;

int main(void)
{
    list<int> intList;
	vector<list<int> > vectorOfLists;
	vectorOfLists.push_back(intList);
	
	return 0;
}

Built with the following commands:

#!/bin/bash
echo Assuming Android NDKr5b installed in /opt/android-ndk-r5b-llvm with
llvm-gcc toolchain added
echo Assuming LLC is in path
set -x

export
PATH=/opt/android-ndk-r5-llvm/toolchains/arm-eabi-4.2.1/prebuilt/darwin-
x86/bin/:$PATH

#Build bitcode
arm-eabi-g++ --emit-llvm -fpic -mthumb-interwork -ffunction-sections
-funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_5__
-D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -D__ANDROID__
-march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-exceptions -fno-rtti
-O2 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops
-finline-limit=300
-I/opt/android-ndk-r5b-llvm/sources/cxx-stl/stlport/stlport
-I/opt/android-ndk-r5b-llvm/sources/cxx-stl/system/include  -DANDROID
-Wa,--noexecstack   -O2 -DNDEBUG -g -g0 -g0
-I/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/include -c
test-libstl.cpp -o test-libstl.o

#Lower bitcode to arm assembly
llc -O0 -relocation-model=pic -enable-local-stack-alloc=false
test-libstl.o -o libtest-libstl.so.bc.s

#Assemble/link
arm-eabi-gcc libtest-libstl.so.bc.s -nostdlib
-Wl,-soname,libtest-libstl.so -Wl,-shared,-Bsymbolic
/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/lib/crtbegin_
so.o libstlport_static.a
/opt/android-ndk-r5b-llvm/llvmToolchain/arm-eabi-4.2.1/prebuilt/darwin-x
86/bin/../lib/gcc/arm-eabi/4.2.1/libgcc.a
/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/lib/libc.so
/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/lib/libstdc++
.so
/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/lib/libm.so
-Wl,--fix-cortex-a8 -march=armv7-a -mfloat-abi=softfp -mfpu=vfp
-Wl,--no-undefined -Wl,-z,noexecstack
-L/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/lib
-lstdc++
-Wl,-rpath-link=/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/u
sr/lib -lsupc++
/opt/android-ndk-r5b-llvm/platforms/android-9/arch-arm/usr/lib/crtend_so
.o -Xlinker -Map -Xlinker libtest-libstl.so.map -o libtest-libstl.so

Cheers,

Joe





More information about the llvm-commits mailing list