diff options
author | Chris Lattner <sabre@nondot.org> | 2010-07-29 05:02:29 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-07-29 05:02:29 +0000 |
commit | 15842bd05bd6d3b7450385ac8f73aaee5f807e19 (patch) | |
tree | e638a87f784e96c7924c53ca4086fef6a18ae362 /test/Analysis/array-struct-region.c | |
parent | 0f408f5242522cbede304472e17931357c1b573d (diff) |
ignore structs that wrap vectors in IR, the abstraction shouldn't add penalty.
Before we'd compile the example into something like:
%coerce.dive2 = getelementptr %struct.v4f32wrapper* %retval, i32 0, i32 0 ; <<4 x float>*> [#uses=1]
%1 = bitcast <4 x float>* %coerce.dive2 to <2 x double>* ; <<2 x double>*> [#uses=1]
%2 = load <2 x double>* %1, align 1 ; <<2 x double>> [#uses=1]
ret <2 x double> %2
Now we produce:
%coerce.dive2 = getelementptr %struct.v4f32wrapper* %retval, i32 0, i32 0 ; <<4 x float>*> [#uses=1]
%0 = load <4 x float>* %coerce.dive2, align 1 ; <<4 x float>> [#uses=1]
ret <4 x float> %0
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109732 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis/array-struct-region.c')
0 files changed, 0 insertions, 0 deletions