[llvm-dev] disable loop unrolling for store of large objects? (original) (raw)

Bagel via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 29 10:08:02 PDT 2018


If a store has a type which is "large", the code generated is loop unrolled. For example:

%R = type {i32, [255 x i32]} @a = global %R zeroinitializer, align 4 define void @foo(%R* %y$) nounwind { L.0: %y = alloca %R* store %R* %y$, %R** %y %0 = load %R*, %R** %y %1 = load %R, %R* %0 store %R %1, %R* @a br label %return return: ret void }

generates a huge number of instructions. Is there a flag somewhere (I couldn't find one) that which cause this store loop not to be unrolled.

Thanks, brian



More information about the llvm-dev mailing list