private void adjustInitializer(ForStmt loop, int numIterationsToSplitAfter, LoopSplitInfo loopSplitInfo) { final Integer newStart = new Integer(loopSplitInfo.getStartValue() + (loopSplitInfo.getIncreasing() ? 1 : -1) * numIterationsToSplitAfter); VariablesDeclaration varDecl = ((DeclarationStmt) loop.getInit()).getVariablesDeclaration(); varDecl.getDeclInfo(0).setInitializer(new ScalarInitializer(new IntConstantExpr( newStart.toString()))); }
private void addGlobalInitializers(FunctionDefinition mainFunction) { assert mainFunction.getPrototype().getName().equals("main"); for (int i = globalsToBeReInitialized.size() - 1; i >= 0; i--) { for (int j = globalsToBeReInitialized.get(i).getNumDecls() - 1; j >= 0; j--) { final VariableDeclInfo vdi = globalsToBeReInitialized.get(i).getDeclInfo(j); if (!(vdi.getInitializer() instanceof ScalarInitializer)) { throw new RuntimeException("Only know how to deal with scalar initializers at present."); } mainFunction.getBody().insertStmt(0, new ExprStmt(new BinaryExpr(new VariableIdentifierExpr(vdi.getName()), ((ScalarInitializer) vdi.getInitializer()).getExpr(), BinOp.ASSIGN))); vdi.setInitializer(null); } } }
final BasicType withoutQualifiers = (BasicType) variablesDeclaration.getBaseType() .getWithoutQualifiers(); declInfo.setInitializer(makeInitializer( withoutQualifiers, declInfo.getArrayInfo(), uniformsInfo.getArgs(uniformName)));
@Override public void applyReductionImpl() { if (originalNumVariables != declaration.getVariablesDeclaration().getNumDecls()) { // Something else changed how many declarations there are, so bail out. return; } final StructifiedVariableInfo originalVariableInfo = findOriginalVariableInfo(); // First, replace all occurrences in the translation unit deStructify(originalVariableInfo); // Now change the declaration declaration.getVariablesDeclaration().getDeclInfo(0).setName(originalVariableInfo.getName()); declaration.getVariablesDeclaration().setBaseType(originalVariableInfo.getType()); declaration.getVariablesDeclaration().getDeclInfo(0).setInitializer(originalVariableInfo .getInitializer().orElse(null)); }
private void structifyDeclaration(String enclosingStructVariableName, StructDefinitionType enclosingStructType) { declToTransform.getVariablesDeclaration() .setBaseType(enclosingStructType.getStructNameType()); final VariableDeclInfo declInfo = declToTransform.getVariablesDeclaration().getDeclInfo(0); declInfo.setName(enclosingStructVariableName); if (declInfo.hasInitializer()) { declInfo.setInitializer( new ScalarInitializer( makeInitializationExpr(enclosingStructType, ((ScalarInitializer) declInfo.getInitializer()).getExpr()) ) ); } }