[PATCH] D18226: Codegen: Tail-duplicate during placement.

David Li via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 1 14:15:28 PDT 2016


davidxl added inline comments.

================
Comment at: test/CodeGen/PowerPC/tail-dup-analyzable-fallthrough.ll:6
@@ +5,3 @@
+%struct.HashBucket = type { %struct.HashBucket*, i64, i64* }
+; This test is checking for a bug where blocks with un-analyzable fallthrough
+; were getting tail-duplicated, leading to incorrect code. The loop-entry check
----------------
Kyle, thanks.

I think it is better get a minimal reproducible and use that as test case. for instance, I am not sure if the struct HashBucket etc and some other things are relevant here -- they are all distractions.   I have pointed to an example of the minimalist test case.

================
Comment at: test/CodeGen/PowerPC/tail-dup-layout.ll:3
@@ +2,3 @@
+target datalayout = "e-m:e-i64:64-n32:64"
+target triple = "powerpc64le-grtev4-linux-gnu"
+
----------------
The test case should be as simple as possible and remove all irrelevant pieces.

Regarding the size limit, you can use  "outline-optional-threshold", option to specify a lower limit so that you can reduce the size of the optional body.

================
Comment at: test/CodeGen/PowerPC/tail-dup-layout.ll:52
@@ +51,3 @@
+
+define void @f(%struct.ptrpair* noalias nocapture sret %result, i32 %tag, i8* %source1, i8* %sink1) {
+entry:
----------------
An example of a simple clean test case:

CodeGen/X86/code_placement_outline_optional_branches.ll


http://reviews.llvm.org/D18226





More information about the llvm-commits mailing list