brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · b339d8f Raw
261 lines · plain
1; RUN: opt -S -passes=dse < %s | FileCheck %s2target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"3 4; This test is not relevant for DSE with MemorySSA. Non-memory instructions5; are ignored anyways. The limits for the MemorySSA traversal are tested in6; llvm/test/Transforms/DeadStoreElimination/MSSA/memoryssa-scan-limit.ll7 8@x = global i32 0, align 49 10; Function Attrs: nounwind11define i32 @test_within_limit() !dbg !4 {12entry:13  ; The first store; later there is a second store to the same location,14  ; so this store should be optimized away by DSE.15  ; CHECK-NOT: store i32 1, ptr @x, align 416  store i32 1, ptr @x, align 417 18  ; Insert 98 dummy instructions between the two stores19  %0 = bitcast i32 0 to i3220  %1 = bitcast i32 0 to i3221  %2 = bitcast i32 0 to i3222  %3 = bitcast i32 0 to i3223  %4 = bitcast i32 0 to i3224  %5 = bitcast i32 0 to i3225  %6 = bitcast i32 0 to i3226  %7 = bitcast i32 0 to i3227  %8 = bitcast i32 0 to i3228  %9 = bitcast i32 0 to i3229  %10 = bitcast i32 0 to i3230  %11 = bitcast i32 0 to i3231  %12 = bitcast i32 0 to i3232  %13 = bitcast i32 0 to i3233  %14 = bitcast i32 0 to i3234  %15 = bitcast i32 0 to i3235  %16 = bitcast i32 0 to i3236  %17 = bitcast i32 0 to i3237  %18 = bitcast i32 0 to i3238  %19 = bitcast i32 0 to i3239  %20 = bitcast i32 0 to i3240  %21 = bitcast i32 0 to i3241  %22 = bitcast i32 0 to i3242  %23 = bitcast i32 0 to i3243  %24 = bitcast i32 0 to i3244  %25 = bitcast i32 0 to i3245  %26 = bitcast i32 0 to i3246  %27 = bitcast i32 0 to i3247  %28 = bitcast i32 0 to i3248  %29 = bitcast i32 0 to i3249  %30 = bitcast i32 0 to i3250  %31 = bitcast i32 0 to i3251  %32 = bitcast i32 0 to i3252  %33 = bitcast i32 0 to i3253  %34 = bitcast i32 0 to i3254  %35 = bitcast i32 0 to i3255  %36 = bitcast i32 0 to i3256  %37 = bitcast i32 0 to i3257  %38 = bitcast i32 0 to i3258  %39 = bitcast i32 0 to i3259  %40 = bitcast i32 0 to i3260  %41 = bitcast i32 0 to i3261  %42 = bitcast i32 0 to i3262  %43 = bitcast i32 0 to i3263  %44 = bitcast i32 0 to i3264  %45 = bitcast i32 0 to i3265  %46 = bitcast i32 0 to i3266  %47 = bitcast i32 0 to i3267  %48 = bitcast i32 0 to i3268  %49 = bitcast i32 0 to i3269  %50 = bitcast i32 0 to i3270  %51 = bitcast i32 0 to i3271  %52 = bitcast i32 0 to i3272  %53 = bitcast i32 0 to i3273  %54 = bitcast i32 0 to i3274  %55 = bitcast i32 0 to i3275  %56 = bitcast i32 0 to i3276  %57 = bitcast i32 0 to i3277  %58 = bitcast i32 0 to i3278  %59 = bitcast i32 0 to i3279  %60 = bitcast i32 0 to i3280  %61 = bitcast i32 0 to i3281  %62 = bitcast i32 0 to i3282  %63 = bitcast i32 0 to i3283  %64 = bitcast i32 0 to i3284  %65 = bitcast i32 0 to i3285  %66 = bitcast i32 0 to i3286  %67 = bitcast i32 0 to i3287  %68 = bitcast i32 0 to i3288  %69 = bitcast i32 0 to i3289  %70 = bitcast i32 0 to i3290  %71 = bitcast i32 0 to i3291  %72 = bitcast i32 0 to i3292  %73 = bitcast i32 0 to i3293  %74 = bitcast i32 0 to i3294  %75 = bitcast i32 0 to i3295  %76 = bitcast i32 0 to i3296  %77 = bitcast i32 0 to i3297  %78 = bitcast i32 0 to i3298  %79 = bitcast i32 0 to i3299  %80 = bitcast i32 0 to i32100  %81 = bitcast i32 0 to i32101  %82 = bitcast i32 0 to i32102  %83 = bitcast i32 0 to i32103  %84 = bitcast i32 0 to i32104  %85 = bitcast i32 0 to i32105  %86 = bitcast i32 0 to i32106  %87 = bitcast i32 0 to i32107  %88 = bitcast i32 0 to i32108  %89 = bitcast i32 0 to i32109  %90 = bitcast i32 0 to i32110  %91 = bitcast i32 0 to i32111  %92 = bitcast i32 0 to i32112  %93 = bitcast i32 0 to i32113  %94 = bitcast i32 0 to i32114  %95 = bitcast i32 0 to i32115  %96 = bitcast i32 0 to i32116  %97 = bitcast i32 0 to i32117 118  ; Insert a meaningless dbg.value intrinsic; it should have no119  ; effect on the working of DSE in any way.120  call void @llvm.dbg.value(metadata i32 undef, metadata !10, metadata !DIExpression()), !dbg !DILocation(scope: !4)121 122  ; CHECK:  store i32 -1, ptr @x, align 4123  store i32 -1, ptr @x, align 4124  ret i32 0125}126 127; Function Attrs: nounwind128define i32 @test_outside_limit() {129entry:130  ; The first store; later there is a second store to the same location131  ; CHECK-NOT: store i32 1, ptr @x, align 4132  store i32 1, ptr @x, align 4133 134  ; Insert 99 dummy instructions between the two stores; this is135  ; one too many instruction for the DSE to take place.136  %0 = bitcast i32 0 to i32137  %1 = bitcast i32 0 to i32138  %2 = bitcast i32 0 to i32139  %3 = bitcast i32 0 to i32140  %4 = bitcast i32 0 to i32141  %5 = bitcast i32 0 to i32142  %6 = bitcast i32 0 to i32143  %7 = bitcast i32 0 to i32144  %8 = bitcast i32 0 to i32145  %9 = bitcast i32 0 to i32146  %10 = bitcast i32 0 to i32147  %11 = bitcast i32 0 to i32148  %12 = bitcast i32 0 to i32149  %13 = bitcast i32 0 to i32150  %14 = bitcast i32 0 to i32151  %15 = bitcast i32 0 to i32152  %16 = bitcast i32 0 to i32153  %17 = bitcast i32 0 to i32154  %18 = bitcast i32 0 to i32155  %19 = bitcast i32 0 to i32156  %20 = bitcast i32 0 to i32157  %21 = bitcast i32 0 to i32158  %22 = bitcast i32 0 to i32159  %23 = bitcast i32 0 to i32160  %24 = bitcast i32 0 to i32161  %25 = bitcast i32 0 to i32162  %26 = bitcast i32 0 to i32163  %27 = bitcast i32 0 to i32164  %28 = bitcast i32 0 to i32165  %29 = bitcast i32 0 to i32166  %30 = bitcast i32 0 to i32167  %31 = bitcast i32 0 to i32168  %32 = bitcast i32 0 to i32169  %33 = bitcast i32 0 to i32170  %34 = bitcast i32 0 to i32171  %35 = bitcast i32 0 to i32172  %36 = bitcast i32 0 to i32173  %37 = bitcast i32 0 to i32174  %38 = bitcast i32 0 to i32175  %39 = bitcast i32 0 to i32176  %40 = bitcast i32 0 to i32177  %41 = bitcast i32 0 to i32178  %42 = bitcast i32 0 to i32179  %43 = bitcast i32 0 to i32180  %44 = bitcast i32 0 to i32181  %45 = bitcast i32 0 to i32182  %46 = bitcast i32 0 to i32183  %47 = bitcast i32 0 to i32184  %48 = bitcast i32 0 to i32185  %49 = bitcast i32 0 to i32186  %50 = bitcast i32 0 to i32187  %51 = bitcast i32 0 to i32188  %52 = bitcast i32 0 to i32189  %53 = bitcast i32 0 to i32190  %54 = bitcast i32 0 to i32191  %55 = bitcast i32 0 to i32192  %56 = bitcast i32 0 to i32193  %57 = bitcast i32 0 to i32194  %58 = bitcast i32 0 to i32195  %59 = bitcast i32 0 to i32196  %60 = bitcast i32 0 to i32197  %61 = bitcast i32 0 to i32198  %62 = bitcast i32 0 to i32199  %63 = bitcast i32 0 to i32200  %64 = bitcast i32 0 to i32201  %65 = bitcast i32 0 to i32202  %66 = bitcast i32 0 to i32203  %67 = bitcast i32 0 to i32204  %68 = bitcast i32 0 to i32205  %69 = bitcast i32 0 to i32206  %70 = bitcast i32 0 to i32207  %71 = bitcast i32 0 to i32208  %72 = bitcast i32 0 to i32209  %73 = bitcast i32 0 to i32210  %74 = bitcast i32 0 to i32211  %75 = bitcast i32 0 to i32212  %76 = bitcast i32 0 to i32213  %77 = bitcast i32 0 to i32214  %78 = bitcast i32 0 to i32215  %79 = bitcast i32 0 to i32216  %80 = bitcast i32 0 to i32217  %81 = bitcast i32 0 to i32218  %82 = bitcast i32 0 to i32219  %83 = bitcast i32 0 to i32220  %84 = bitcast i32 0 to i32221  %85 = bitcast i32 0 to i32222  %86 = bitcast i32 0 to i32223  %87 = bitcast i32 0 to i32224  %88 = bitcast i32 0 to i32225  %89 = bitcast i32 0 to i32226  %90 = bitcast i32 0 to i32227  %91 = bitcast i32 0 to i32228  %92 = bitcast i32 0 to i32229  %93 = bitcast i32 0 to i32230  %94 = bitcast i32 0 to i32231  %95 = bitcast i32 0 to i32232  %96 = bitcast i32 0 to i32233  %97 = bitcast i32 0 to i32234  %98 = bitcast i32 0 to i32235 236  ; CHECK:  store i32 -1, ptr @x, align 4237  store i32 -1, ptr @x, align 4238  ret i32 0239}240 241; Function Attrs: nounwind readnone242declare void @llvm.dbg.value(metadata, metadata, metadata)243 244!llvm.dbg.cu = !{!0}245!llvm.module.flags = !{!11, !13}246 247!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.4", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)248!1 = !DIFile(filename: "test.c", directory: "/home/tmp")249!2 = !{}250!4 = distinct !DISubprogram(name: "test_within_limit", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 4, file: !1, scope: !5, type: !6, retainedNodes: !2)251!5 = !DIFile(filename: "test.c", directory: "/home/tmp")252!6 = !DISubroutineType(types: !7)253!7 = !{!8}254!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)255!9 = !{!10}256!10 = !DILocalVariable(name: "x", scope: !4, type: !8)257!11 = !{i32 2, !"Dwarf Version", i32 4}258!12 = !{ptr undef}259 260!13 = !{i32 1, !"Debug Info Version", i32 3}261