diff options
author | Manman Ren <manman.ren@gmail.com> | 2013-08-21 21:00:10 +0000 |
---|---|---|
committer | Manman Ren <manman.ren@gmail.com> | 2013-08-21 21:00:10 +0000 |
commit | 2470d87adc235dd93fdad360fc79c644865a4a9c (patch) | |
tree | 5a57f4fe91d48fddcbfa64caa4792309e0411133 | |
parent | 879ce8841dc980104d1e99bd45ad6f15bb4efd2e (diff) | |
download | bcm5719-llvm-2470d87adc235dd93fdad360fc79c644865a4a9c.tar.gz bcm5719-llvm-2470d87adc235dd93fdad360fc79c644865a4a9c.zip |
TBAA: add testing case to check typedef can alias.
llvm-svn: 188931
-rw-r--r-- | clang/test/CodeGen/tbaa.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/test/CodeGen/tbaa.cpp b/clang/test/CodeGen/tbaa.cpp index e1fc7a79bee..e931930a52e 100644 --- a/clang/test/CodeGen/tbaa.cpp +++ b/clang/test/CodeGen/tbaa.cpp @@ -222,6 +222,20 @@ char g14(struct six *a, struct six *b) { return a->b; } +// Types that differ only by name may alias. +typedef StructS StructS3; +uint32_t g15(StructS *S, StructS3 *S3, uint64_t count) { +// CHECK: define i32 @{{.*}}( +// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_i32]] +// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_i32]] +// PATH: define i32 @{{.*}}( +// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32]] +// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32]] + S->f32 = 1; + S3->f32 = 4; + return S->f32; +} + // CHECK: [[TAG_char]] = metadata !{metadata !"omnipotent char", metadata [[TAG_cxx_tbaa:!.*]]} // CHECK: [[TAG_cxx_tbaa]] = metadata !{metadata !"Simple C/C++ TBAA"} // CHECK: [[TAG_i32]] = metadata !{metadata !"int", metadata [[TAG_char]]} |